测试点三:英爱是只有一个节点的情况,这个时候我们的sum应该为0。所以记录层数的变量应该初试值就是0,不能设置为1。
#include<bits/stdc++.h>
using namespace std;
vector<int> tree[100003];
//sum = 0 就是测试点三所考察的点
int max_level = 0,sum=0;
void DFS(int v,int n) {
if (tree[v].size() == 0) {//树的叶子节点
if (n > max_level) {
max_level = n;
sum = 1;
}
else if (max_level == n) {
sum++;
}
return;
}
for (int i = 0; i < tree[v].size(); i++) {
DFS(tree[v][i], n + 1);
}
}
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("Text.txt", "r", stdin);
#endif // ONLINE_JUDGE
int N,root; double p, r;
cin >> N >> p >> r;
for (int i = 0; i < N; i++) {
int temp; cin >> temp;
if(temp!=-1)
tree[temp].push_back(i);
else root = i;
}
DFS(root,0);
double max_price = p*pow(1+r/100,max_level);
printf("%.2f %d", max_price, sum);
}