Ji_Cheng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DFS遍历

#include<cstdio>

#include<cmath>

using name spacestd;

const int maxn=10012;

struct node{

double data;

vector<int> child;

}Node[maxn];

int n;

double p,r,ans=0;

void DFS(int index,int depth){

if(Node[index].child.size()==0){

ans +=Node[index].data*pow(1+r,depth);

return;

}

for (int i=0;i<Node[index].child.size();i++){

DFS(Node[index].child[i],depth+1);

}}

int main(){

int x,child;

scanf("%d%lf%lf",&n,&p,&r);

r /=100;

for(int i=0;i<n;i++){

scanf("%d",&k);

if(k==0){

scanf("%lf",&Node[i].data);

}else{

for (int j=0;j<k;j++){

scanf("%d",&child);

Node[i].child.push_back(child);

}}}

DFS(0,0);

printf("%.lf'\n",p*ans);

return 0;

}

 

posted on 2018-09-23 02:58  Ji_Cheng  阅读(163)  评论(0)    收藏  举报