#include<bits/stdc++.h> using namespace std; vector<pair<int,int> >v[100005]; int vis[100005]; int maxx=-1,c; void dfs(int m,int sum){ if(sum>maxx){ maxx=sum; c=m; } vis[m]=1; for(int i=0;i<v[m].size();i++){ if(!vis[v[m][i].first]){ vis[v[m][i].first]=1; dfs(v[m][i].first,sum+v[m][i].second); vis[v[m][i].first]=0; } } } int main(){ int n,u,e,cost;cin>>n; for(int i=0;i<n-1;i++){ cin>>u>>e>>cost; v[u].push_back(make_pair(e,cost)); v[e].push_back(make_pair(u,cost)); } dfs(u,0); maxx=-1; memset(vis,0,sizeof(vis)); dfs(c,0); cout<<maxx<<endl; return 0; }
原文:https://www.cnblogs.com/mohari/p/13581945.html