解题思路:
注意事项:
参考代码:
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 6010;
int dp[MAXN][2];
vector<int> edge[MAXN];
int n;
bool isChild[MAXN];
void dfs(int node)
{
for (int i = 0; i < edge[node].size(); i++)
{
int child = edge[node][i];
dfs(child);
dp[node][0] += max(dp[child][0], dp[child][1]);
dp[node][1] += dp[child][0];
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> dp[i][1];
}
int x, y;
while (true)
{
cin >> x >> y;
if (x == 0 && y == 0)
{
break;
}
edge[y].push_back(x);
isChild[x] = true;
}
int root = 1;
for (int i = 1; i <= n; i++)
{
if (!isChild[i])
{
root = i;
break;
}
}
dfs(root);
cout << max(dp[root][1], dp[root][0]) << endl;
return 0;
}
0.0分
3 人评分
C二级辅导-计负均正 (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:956 |
【亲和数】 (C语言代码)浏览:501 |
IP判断 (C语言描述,蓝桥杯)浏览:1094 |
星期判断机 (C语言代码)浏览:859 |
一元一次方程 (C语言代码)浏览:4059 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:673 |
幸运数 (C++代码)浏览:2859 |
求圆的面积 (C语言代码)浏览:657 |