蚂蚁上树

蚂蚁想知道这棵树上距离最远的两个点之间的距离

给你一个具有 n 个节点的树

求这棵树上距离最远的两个点之间的距离

输入格式

第一行一个整数 n ,(1≤n≤104)

接下来 n−1 行,每行三个整数 x,y,z 表示 x 与 y 之间有一条长度为 z 的边 (1≤x,y≤n,1≤z≤104)

输出格式

一个整数表示树上距离最远的两个点之间的距离

样例

Input
5
1 2 9
1 3 3
1 5 2
2 4 10
单击复制

Output
22
单击复制
简单模板题
#include
using namespace std;
const int N = 1e4 + 7;
typedef long long ll;

vector >v[N];
int vis[N];
ll dis[N];
ll ans;

int bfs(int x)
{
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
int point=0;
queue q;
q.push(x);
vis[x]=1;
while(!q.empty())
{
int f=q.front();
q.pop();
if(dis[f]>ans)
{
ans=dis[f];
point=f;
}
pair t;
for(int i=0;i {
t=v[f][i];
if(vis[t.first]==0)
{
vis[t.first]=1;
dis[t.first]=dis[f]+t.second;
q.push(t.first);
}
}
}
return point;
}

int main()
{
int n;
int x,y,z;
cin>>n;
n–;
while(n–)
{
cin>>x>>y>>z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,z));
}
ans=0;
int point=bfs(1);
ans=0;
int t=bfs(point);
cout< }

你可能感兴趣的:(蚂蚁上树)