用C++代码解决一下问题:DescriptionThe city executive board in Lund wants to construct a sightseeing tour by bus in Lund so that tourists can see every corner of the beautiful city They want to construct the tou
题目大意
在一个城市里规划一条游览路线,使得这条路线恰好经过每一条道路一次,且这条路线是只从一个点出发又回到这个点,道路有单向与双向两种情况。求是否存在这样的路线。
算法思想
本题可以使用欧拉回路的思想,欧拉回路是指一条路线,恰好经过每一条边一次且只经过一次的回路。如果存在欧拉回路,则这个图是连通的,且每个点的度数都是偶数,因为每个点走进去一条边就必须走出来一条边。
但是欧拉回路有一个限制,那就是图中所有边的权值都是相等的,但是本题中边的权值不一定相等,所以我们可以使用一种叫做欧拉通路的算法,就是在满足欧拉回路的基础上,处理一下起点和终点的问题,因为欧拉回路是从一个点出发又回到这个点的,如果我们从另一个点开始,则会多出一条没有走的边,所以我们可以从起点出发,找到欧拉回路,如果欧拉回路的起点和终点是一个点,那么就返回“possible”,否则从终点出发,找到欧拉回路,如果欧拉回路的起点和终点是一个点,那么就返回“possible”,否则返回“impossible”。
代码实现
原文地址: http://www.cveoy.top/t/topic/fkZF 著作权归作者所有。请勿转载和采集!