即树的最长路径
#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
#include<queue>
#define MAXN 1000
using namespace std;
int vis[MAXN];//记录数的节点是否被查找过
int dis[MAXN];//记录距离
vector <pair <int ,int > > V[MAXN];//记录节点和他们的距离
int n,m;
int ans;//记录最大距离
int bfs(int d)
{
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
queue <int >Q;
Q.push(d);
vis[d]=1;
int point=0;
while(!Q.empty())
{
int F=Q.front();
Q.pop();
if(dis[F]>ans){
ans=dis[F];
point=F;
}
pair<int ,int> t;
for(int i=0 ; i<V[F].size() ; i++){
t=V[F][i];
if(dis[t.first]==0){
t.first=1;
dis[t.first]=dis[F]+t.second;
Q.push(t.first);
}
}
}
return point;
}
int main()
{
int x,y,z;
while(scanf("%d %d %d",&x,&y,&z)!=EOF){
V[x]. push_back ( make_pair (y,z));
V[y]. push_back ( make_pair (x,z));
}
ans=0;
int point=bfs(1);
ans=0;
bfs(point);
printf("%d\n",ans);
return 0;
}