样例输入1 5 1 2 2 1 3 1 2 4 5 2 5 4
样例输出1 135
#include<bits/stdc++.h> using namespace std; #define max_v 100005 struct node { int v,c; node(int x,int y) { v=x; c=y; } }; vector<node> G[max_v]; int n; int ans,s1; int vis[max_v]; void init() { memset(vis,0,sizeof(vis)); ans=-1; } void dfs(int u,int sum) { if(sum>ans) { ans=sum; s1=u; } for(int i=0;i<G[u].size();i++) { int v=G[u][i].v; int w=G[u][i].c; if(vis[v]==0) { vis[v]=1; dfs(v,sum+w); vis[v]=0; } } } int main() { cin>>n; int x,y,z; for(int i=1;i<=n-1;i++) { cin>>x>>y>>z; G[x].push_back(node(y,z)); G[y].push_back(node(x,z)); } init(); vis[1]=1; dfs(1,0); init(); vis[s1]=1; dfs(s1,0); long long sum=0; for(int i=1;i<=ans;i++) { sum+=(i+10); } cout<<sum<<endl; return 0; }
原文:https://www.cnblogs.com/yinbiao/p/10498147.html