首页 > 其他 > 详细

有权无向图的最长距离

时间:2020-04-08 20:30:13      阅读:83      评论:0      收藏:0      [点我收藏+]

求有权无向图两点之间的最长距离

这是根据蓝桥杯大臣的旅费一题 看一位大佬写的 https://blog.dotcpp.com/a/7027 这个是链接
#include
#include
#include<stdio.g>
#include
#include
using namespace std;
int cnt,node,n;//cnt记录的是最长的路径是多少,node是从第一个节点开始找到的最远的路径
const int manx=1e5;
vector<pair<int,int> >e[maxn];//e[i].frirst存的是边,e[i].second存的是权值
bool vis[maxn];
void dfs(int v,int k)//v是第几个节点,k是路径的长度
{
if(k>cnt)//找到了更远的 ,就更新路径长度和节点
{
cnt=k;
node=v;
}
for(int i=1;i<v.size();i++)
if(!vis[e[v][i].first])
{ vis[e[v][i].first]=true;
dfs(e[v][i].first,k+e[v][i].second);
vis[e[v][i].first]=false;
}

}

int main()
{
 cin>>n;
for(int i=0;i<n-1;i++)
{
 int x,y,z;
cin>>x>>y>>z;
e[x].push_back(make_pair(y,z));
e[y].push_back(make_pair(x,z));
}
vis[1]=true;
dfs(1,0);
vis[1]=flase;
cnt=0;
vis[node]=true;
dfs(node,0);
cout<<cnt<<endl;
}

有权无向图的最长距离

原文:https://www.cnblogs.com/arbor-one/p/12662393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!