为什么MLE,
查看原帖
为什么MLE,
910357
songzhihan2010楼主2023/10/3 15:54
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5001;
vector <int> son[N];
int n;
int a[N],f[N],t[N][2],l,k;
void tryy(int root) {
	t[root][0]=0;
	t[root][1]=a[root];
	for (int i=0; i<son[root].size(); i++) {
		int y=son[root][i];
		tryy(y);
		t[root][0]+=max(t[y][0],t[y][1]);
		t[root][1]+=t[y][0];
	}
}
int main() {
	scanf("%d",&n);
	for (int i=1; i<=n; i++) {
		scanf("%d",&a[i]);
		f[i]=0;
	}
	while(scanf("%d%d",&l,&k)&&l!=0&&k!=0) {
		f[l]=k;
		son[k].push_back(l);
	}
	int root;
	for (int i=1; i<=n; i++) {
		if(f[i]==0) {
			root=i;
			break;
		}
	}
	tryy(root);
	printf("%d\n",max(t[root][0],t[root][1]));
	return 0;
}
2023/10/3 15:54
加载中...