【PAT甲级】1090 Highest Price in Supply Chain (25 分)
题意:
输入一个正整数N(<=1e5),和两个小数r和f,表示树的结点总数和商品的原价以及每向下一层价格升高的幅度。下一行输入N个结点的父结点,-1表示为根节点。输出最深的叶子结点处购买商品的价格以及有几个深度最深的结点。
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int a[100007]; 5 vector<int>v[100007]; 6 int mx; 7 int ans[100007]; 8 void dfs(int x,int storey){ 9 mx=max(mx,storey); 10 ans[x]=storey; 11 for(auto it:v[x]) 12 dfs(it,storey+1); 13 } 14 int main(){ 15 int n; 16 int root=0; 17 double p,r; 18 cin>>n>>p>>r; 19 for(int i=1;i<=n;++i){ 20 cin>>a[i]; 21 if(a[i]==-1) 22 root=i-1; 23 else 24 v[a[i]].push_back(i-1); 25 } 26 dfs(root,0); 27 int num=0; 28 for(int i=0;i<n;++i) 29 if(ans[i]==mx) 30 ++num; 31 double sum=p*pow(1+r/100.0,mx); 32 printf("%.2lf %d",sum,num); 33 return 0; 34 }
保持热爱 不懈努力
不试试看怎么知道会失败呢(划掉)
世上无难事 只要肯放弃(划掉)