344. 观光之旅(最小环问题,Floyd)

344. 观光之旅 - AcWing题库

给定一张无向图,求图中一个至少包含 33 个点的环,环上的节点不重复,并且环上的边的长度之和最小。

该问题称为无向图的最小环问题。

你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。

输入格式

第一行包含两个整数 N 和 M,表示无向图有 N 个点,M 条边。

接下来 M 行,每行包含三个整数 u,v,l,表示点 u 和点 v 之间有一条边,边长为 l。

输出格式

输出占一行,包含最小环的所有节点(按顺序输出),如果不存在则输出 No solution.

数据范围

1≤N≤100
1≤M≤10000
1≤l<500

输入样例:
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20
输出样例:
1 3 5 2

解析: 

考虑Floyd算法的过程,当外层循环k刚开始时,d[i,j]保存着“经过编号不超过k-1的节点“从i到j的最短路。

于是,min{d[i,j]+a[j,k]+a[k,i]}其中1<=i<j<k,就是满足以下条件的最小环长度。

1.有编号不超过k的节点构成

2.经过节点k

上式中的i,j相当于枚举了环上与k相邻的两个点。古以上结论显然成立。存在k属于[1,n],都对上式进行计算,取最小值,即可得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值