标签:for tor index amp class cto i++ main https
链接
给一棵树,在树根处货物的价格为p,然后每往下走一层,价格增加r%,求所有叶子结点的最高价格,以及这个价格的叶子结点个数
void dfs(int index, int depth) {
if(v[index].size() == 0) {
if(maxdepth == depth)
maxnum++;
if(maxdepth < depth) {
maxdepth = depth;
maxnum = 1;
}
return ;
}
for(int i = 0; i < v[index].size(); i++)
dfs(v[index][i], depth + 1);
}
我的代码就是保存所有值,排序,然后再遍历求重复值
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
vector<int> v[maxn];
int n,id, rt, cnt;
double p,r;
vector<int> ans;
bool cmp(int a, int b){
return a > b;
}
void dfs(int root, int m){
if(v[root].size()==0){
ans.push_back(m);
return;
}
for(int i=0;i<v[root].size();i++){
dfs(v[root][i], m+1);
}
}
void solve(){
dfs(rt, 0);
sort(ans.begin(), ans.end(), cmp);
for(int i=1;i<ans.size();i++){
if(ans[i] == ans[0]) cnt++;
}
double max_ans = pow(1+r/100, ans[0]) * p;
printf("%.2f %d\n", max_ans, cnt+1);
}
int main(){
scanf("%d%lf%lf",&n,&p,&r);
for(int i=0;i<n;i++){
scanf("%d",&id);
if(id != -1)
v[id].push_back(i);
else rt = i;
}
solve();
}
PAT A1090 Highest Price in Supply Chain [树的遍历]
标签:for tor index amp class cto i++ main https
原文地址:https://www.cnblogs.com/doragd/p/11284882.html