AcWing 1580. 供应链最高价格
原题链接
简单
作者:
leo123456
,
2020-08-24 11:16:23
,
所有人可见
,
阅读 739
#include<iostream>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
const int N=100010;
int n;
int max_depth,cnt[N];
vector<int> child[N];
double p,r;
void dfs(int u,int depth)
{
if(child[u].size()==0)//儿子结点中可能有0,不能用上一题的写法
{
cnt[depth]++;
max_depth=max(depth,max_depth);
return;
}
for(int i=0;i<child[u].size();i++)
dfs(child[u][i],depth+1);
}
int main()
{
cin>>n>>p>>r;
r/=100;
int root,father;
for(int i=0;i<n;i++)
{
cin>>father;
if(father==-1) root=i;
else child[father].push_back(i);
}
dfs(root,0);
printf("%.2f %d\n",p*pow(1+r,max_depth),cnt[max_depth]);
return 0;
}
9 1.80 1.00
1 5 4 4 -1 4 5 3 6
博主,这份数据 第一个节点是自己给自己供货吗?不太明白。