社区讨论

WA on第二个样例

AT_abc222_f [ABC222F] Expensive Expense参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhj0x6by
此快照首次捕获于
2025/11/03 18:55
4 个月前
此快照最后确认于
2025/11/03 18:55
4 个月前
查看原帖
样例 #2 我的输出
CPP
105
108
106
109
106
100

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<vector<pair<int,int>>> g;
pair<int,int> dfs(int x,int y){
    int id=x,ans=0;
    pair<int,int> z;
    for(auto p:g[x]){
        if(p.second==y) continue;
        z=dfs(p.second,x);
        if(z.first+p.first>ans){
            id=z.second;
            ans=z.first+p.first;
        }
    }
    return {ans,id};
}
void ans(int x,int y,int z,vector<int> &dp){
    dp[x]=z;
    for(auto i:g[x]){
        if(i.second==y) continue;
        ans(i.second,x,z+i.first,dp);
    }
}
signed main(){
    int n,a,b,c,d;
    cin>>n;
    g.resize(2*n+1);
    for(int i=1;i<n;++i){
        cin>>a>>b>>c;
        g[a].push_back({c,b});
        g[b].push_back({c,a});
    }
    for(int i=1;i<=n;++i){
        cin>>d;
        g[i].push_back({d,n+i});
        g[n+i].push_back({d,i});
    }
    a=dfs(1,0).second;
    b=dfs(a,0).second;
    vector<int> dpa(2*n+1);
    vector<int> dpb(2*n+1);
    ans(a,0,0,dpa);
    ans(b,0,0,dpb);
    for(int i=1;i<=n;++i){
        cout<<max(dpa[i],dpb[i])<<'\n';
    }
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...