其他分享
首页 > 其他分享> > 322 树的直径

322 树的直径

作者:互联网

视频链接:

#include <cstring>
#include <iostream>
#include <algorithm>
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;
    // printf("回%d d1=%d d2=%d\n",x,d1,d2);
  }
  ans=max(ans,d1+d2);
  // printf("离%d ans=%d\n",x,ans);
  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 << endl;
  return 0;
}

 

标签:int,ed,dfs,322,ans,直径,d2,d1
来源: https://www.cnblogs.com/dx123/p/16320458.html