我写出来啦!!!
虽然是图里最简单的!
我用了递归!
300多我满足了!
#include<iostream>
#include<vector>
#include <iomanip>
using namespace std;
int N;
int maxdep=0;
int ronum=0;//最深数量
float iniprice,incre;
vector <int> index;//存父亲
vector <int> depth;//存每个节点的深度
int dep(int n,int s);
int main(){
ios::sync_with_stdio(false);
cin>>N>>iniprice>>incre;
index.resize(N);
depth.resize(N,-1);
int mm;
for(int i=0;i<N;i++){
cin>>mm;
index[i]=mm;
}//输入完成
for(int i=0;i<N;i++){
if(depth[i]==-1)
int m=dep(i,index[i]);
}//计算每个节点深度
float lastprice=iniprice;
float ini=1+incre/100;
for(int i=0;i<maxdep;i++){
lastprice*=ini;
}
cout<<setiosflags(ios::fixed)<<setprecision(2)<<lastprice;
//保留两位小数输出
cout<<" "<<ronum;
return 0;
}
int dep(int n,int s){
if(s==-1){
depth[n]=0;
return 0;
}
else
{
int dd;
dd=dep(s,index[s])+1;
depth[n]=dd;
if(dd>maxdep){
maxdep=dd;
ronum=1;
}
else{
if(dd==maxdep)
ronum++;
}
return dd;
}
}