实在是想不出来我为什么错了 测试样例是通过的,有四个测试点显示答案错误❌
求网上的大神看看
或者留着我以后看 TVT
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<vector<int>> t;
int weight[100005];//这里不需要visit??
int height[100005];
vector<int> node;//存放结果
void dfs(int v,int h){
if(t[v].size()==0){//假如是叶子节点
height[v]=h;
node.push_back(v);
return;
}
for(int i=0;i<t[v].size();i++){
dfs(t[v][i],h+1);
}
}
int main(int argc, const char * argv[]) {
int n;
float p,r;
cin>>n>>p>>r;
t.resize(n+1);
for(int i=0;i<n;i++){
int m;
cin>>m;
if(m!=0){
for(int j=0;j<m;j++){
int a;
cin>>a;
t[i].push_back(a);
}
}else{
int b;
cin>>b;
weight[i]=b;
}
}
dfs(0,0);
float total=0.0;
for(int i=0;i<node.size();i++){
total+=weight[node[i]]*p*pow(1+r/100,height[node[i]]);
}
printf("%0.1f",total);
return 0;
}