#include<bits/stdc++.h>
#define int long long
#define pint pair<int,int>
#define N 200005
#define pb push_back
#define ff first
#define ss second
#define mod 1000000007
#define INF 1000000000000000005
#define pu push
using namespace std;
int n,k,dp[N],ans[N];
vector<pint> v[N];
inline void dfs(int ind,int parent)
{
for(int i=0;i<v[ind].size();i++)
{
if(v[ind][i].ff==parent)
continue;
dfs(v[ind][i].ff,ind);
dp[ind]=max(dp[ind],dp[v[ind][i].ff]+v[ind][i].ss);
}
return;
}
inline void f(int ind,int parent,int sum)
{
ans[ind]=max(dp[ind],sum);
int go,maxim1,maxim2;
go=maxim1=maxim2=-1;
for(int i=0;i<v[ind].size();i++)
{
if(v[ind][i].ff==parent)
continue;
if(dp[v[ind][i].ff]+v[ind][i].ss>maxim1)
{
maxim2=maxim1;
maxim1=dp[v[ind][i].ff]+v[ind][i].ss;
go=v[ind][i].ff;
}
else if(dp[v[ind][i].ff]+v[ind][i].ss>maxim2)
{
maxim2=dp[v[ind][i].ff]+v[ind][i].ss;
}
}
for(int i=0;i<v[ind].size();i++)
{
if(v[ind][i].ff!=parent)
{
if(v[ind][i].ff==go)
f(v[ind][i].ff,ind,max(sum,maxim2)+v[ind][i].ss);
else
f(v[ind][i].ff,ind,max(sum,maxim1)+v[ind][i].ss);
}
}
return;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n>>k;
int arr[n];
for(int i=0;i<(n-1);i++)
{
int a,b,c;
cin>>a>>b>>c;
a--;
b--;
v[a].pb({b,c});
v[b].pb({a,c});
}
dfs(0,-1);
f(0,-1,0);
for(int i=0;i<n;i++)
{
cout<<ans[i]<<endl;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |