1、B站视频链接:E33 树形DP 树的直径_哔哩哔哩_bilibili
cpp
#include <bits/stdc++.h>
using namespace std;
const int N=10010,M=20010;
int n,a,b,c,ans;
struct edge{int v,w;};
vector<edge> e[N];
int dfs(int x,int fa){
int d1=0,d2=0;
for(auto ed:e[x]){
int y=ed.v,z=ed.w;
if(y==fa)continue;
int d=dfs(y,x)+z;
if(d>d1)d2=d1,d1=d;
else if(d>d2)d2=d;
}
ans=max(ans,d1+d2);
return d1;
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>a>>b>>c;
e[a].push_back({b,c});
e[b].push_back({a,c});
}
dfs(1,-1);
cout<<ans;
return 0;
}