建议增加一组Hack数据:
查看原帖
建议增加一组Hack数据:
157052
lice1211楼主2021/10/27 20:54

建议增加一组Hack数据:

有bug但是AC的代码:

#include <bits/stdc++.h>

using namespace std;

const int N = 16005;

vector < int > G[N];

int fa[N], ans[N], bea[N];

void get_ans( int u ) {
	ans[u] = bea[u];
	int len = G[u].size();
	for( int i = 0; i < len; i++ ) {
		get_ans(G[u][i]);
		ans[u] += max( 0, ans[G[u][i]] );
	}
	return ;
}

int main() {
	memset( fa, -1, sizeof(fa) );
	int n, u, v;
	scanf("%d",&n);
	for( int i = 1; i <= n; i++ ) scanf("%d",&bea[i]);
	for( int i = 1; i < n; i++ ) {
		scanf("%d %d",&u,&v);
		if( fa[v] != -1 ) swap( u, v );
		G[u].push_back(v);
		fa[v] = u;
	}
	int root = 0;
	for( int i = 1; i <= n; i++ ) {
		if( fa[i] == -1 ) {
			root = i;
			break;
		}
	}
	get_ans(root);
	long long maxx = -1e10;
	for( int i = 1; i <= n; i++ ) {
		maxx = max( maxx, 1ll*ans[i] );
	}
	printf("%lld\n",maxx);
	return 0;
}

输入

4
1 1 1000 1000
1 2
3 4
2 4

正确输出

2002

实际输出

2

本人能力有限,所造数据较为简单,望dalao们给出更有参考价值的数据。

lice1211敬上

2021/10/27 20:54
加载中...