獻給小女生的開放世界遊戲 《小馬精靈》夏季發售
阿新 • • 發佈:2021-01-29
想想是不是因為忘記存值導致結果不對
還有注意理解遞迴裡的return
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//const int maxn = 100010;
struct node
{
double data,v,power;
vector<int> child;
int leveal;
}Node[maxn];
int n;
double z,r, sum;
void dfs(int index, int leveal)
{
if(Node[index].data == 0)
{
sum += z* pow((1 - r),leveal) * Node[index].power;
return;
}
for(int i = 0; i < Node[index].child.size(); i++)
{
dfs(Node[index].child[i], leveal+1);
}
}
int main()
{
for(int i = 0; i < maxn; i++)
{
Node[i].power = 1;
}
cin >> n >> z >>r;
r = r * 0.01;
for(int i = 0; i < n; i++)
{
int k,x,b;
cin >> k;
Node[i].data = k;
if(k == 0) cin >> Node[i].power;
else
{
for(int j = 0; j < k; j++)
{
cin >> b;
Node[i].child.push_back(b);
}
}
}
dfs( 0,0);
cout << (int)sum;
}