WA第11个点(红色的100分)
查看原帖
WA第11个点(红色的100分)
1281359
kangzhehan楼主2025/7/29 09:55
#include <bits/stdc++.h>
#define int long long 
#define maxn 16050
using namespace std;
vector<int> to[maxn];
int fa[maxn],w[maxn],dp[maxn][2];
void dfs(int u)
{
    dp[u][0]=0,dp[u][1]=w[u];
    for(int v : to[u])
    {
        if(v==fa[u]) continue;
        fa[v]=u; 
        dfs(v);
        dp[u][0] = max(dp[u][0] , max(dp[v][1] , dp[v][0]));
		dp[u][1] = max(dp[u][1] , dp[v][1] + dp[u][1]);
    }
}
signed main()
{
    int n; cin>>n;
    for(int i=1;i<=n;i++) cin>>w[i];
    for(int i=1;i<=n-1;i++)
    {
        int u,v;
        cin>>u>>v;
        to[u].push_back(v);
        to[v].push_back(u);
    }
    dfs(1);
    cout<<max(dp[1][0],dp[1][1]);
    return 0;
}
2025/7/29 09:55
加载中...