为什么本地编译运行还没输入就结束了,value 3221225785
查看原帖
为什么本地编译运行还没输入就结束了,value 3221225785
425333
keve楼主2022/4/2 15:52
#include <bits/stdc++.h>
using namespace std;
const int MAXLEN = 6005;
const int INF = 1 << 30;
int n;
int val[MAXLEN];
int father[MAXLEN];
vector<int> tree[MAXLEN];
int dp[MAXLEN][2];
void dfs(int u) {
	dp[u][0] = 0;
	dp[u][1] = val[u];
	for (int i = 0; i < (int)tree[u].size(); i++) {
		int son = tree[u][i];
		dfs(son);
		dp[u][0] += max(dp[son][1], dp[son][0]);
		dp[u][1] += dp[son][0];
	}
}
signed main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> val[i];
		tree[i].clear();
		father[i] = -1;
	}
	
	for (int i = 1; i <= n; i++) {
		int l, k;
		cin >> l >> k;
		tree[k].push_back(l);
		father[l] = k;
	}
	int tmp = 1;
	while(father[tmp] != -1){
		tmp = father[tmp];
	}
	dfs(tmp);
	cout << max(dp[tmp][1],dp[tmp][0]);
	
	return 0;
}
2022/4/2 15:52
加载中...