社区讨论
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 我的输出
CPP105
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 条回复,欢迎继续交流。
正在加载回复...