建议增加一组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敬上