73分,救救我 QWQ
查看原帖
73分,救救我 QWQ
1283989
akaryan楼主2024/9/18 22:00
#include <bits/stdc++.h>
using namespace std;
bool x[16002][1602] = {0};
long long y[16002][2] = {0} , a , b , s = INT_MIN , n;
long long node(long long a){
	if(y[a][2] == 0){
		if(y[a][1] < 0)
			return 0;
		else 
			return y[a][1];
	}
	for(int j = 3 ; j <= n + 2 ; j ++){
		if(x[a][j]){
			x[a][j] = 0 , x[j - 2][a + 2] = 0;
			y[a][1] = node(j - 2) + y[a][1];
			if(y[a][1] > s)
				s = y[a][1];
		}
	}
	if(y[a][1] <= 0)
		return 0;
	else 
		return y[a][1];
}
int main(){
	scanf("%d" , &n);
	for(int i = 1 ; i <= n ; i ++)
		scanf("%d" , &y[i][1]);	
	for(int i = 2 ; i <= n ; i ++){
		scanf("%d%d" , &a , &b);
		y[a][2] ++ , y[b][2] ++ , x[b][a + 2] = 1 , x[a][b + 2] = 1;
	}
	node(n);
	printf("%d\n" , s);
	return 0;
}
/*
#1 #2 #3 #7 #8 #9 #10 AC
#4 #5 WA
#6 RE 
*/
2024/9/18 22:00
加载中...