题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805376476626944
注意
不能用map,会出现段错误;使用unordered_map是因为它不需要排序效率较高,能够满足题目要求
AC代码
#include<bits/stdc++.h>
using namespace std;
int n,root=-1,maxdepth=0,cnt=0;
double p,r;
unordered_map<int,vector<int>> f;
void dfs(int root,int depth)
{
if(f[root].size()==0){
if(depth>maxdepth) {
maxdepth=depth;
cnt=1;
}
else if(depth==maxdepth)
cnt++;
return;
}
for(int i=0;i<f[root].size();i++)
dfs(f[root][i],depth+1);
}
int main()
{
cin>>n>>p>>r;
for(int i=0;i<n;i++)
{
int t;
cin>>t;
if(t!=-1) f[t].push_back(i);
else root=i;
}
dfs(root,0);
printf("%.2lf %d",p*pow((1+r/100),maxdepth),cnt);
}
该博客介绍了PAT甲级竞赛中的一道编程题1090HighestPriceinSupplyChain。题目要求不使用map,推荐使用unordered_map,以提高效率。AC代码提供了一个解决方案,通过深度优先搜索计算供应链的最大深度和节点数量,并最终计算价格。
497





