题目链接:
#include#include #include #include #include using namespace std;const int MAXN=6050;vector son[MAXN];int f[MAXN];//father int v[MAXN];int dp[MAXN][2];void dfs(int p){ int len=son[p].size(); dp[p][1]=v[p]; for(int i=0;i >n){ for(int i=1;i<=n;i++) { cin>>v[i]; son[i].clear(); f[i]=-1; dp[i][0]=dp[i][1]=0; } int a,b; while(cin>>a>>b) { if(a==0&&b==0) break; f[a]=b; son[b].push_back(a); } a=1; while(f[a]!=-1) a=f[a];//找根节点 dfs(a); cout< <