Sightseeing trip(最小环+求路径)

本文介绍了Adelton城旅行社寻找最短观光路线的问题,这是一个图论中的最小环+路径问题。利用Floyd算法求解,通过比较d[i][j] + map[i][k] + map[k][j]来寻找最小环,并更新路径数组。当找不到最小环时,输出"No solution."。样例输入和输出展示了算法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sightseeing trip

题目描述:

在Adelton城有一个桑给巴尔岛的旅行社。它已决定提供它的客户,其中一些景点,观光小镇。为了赚取尽可能多的钱,该机构接受了一个精明的决定:有必要找到最短的路线,开始和结束在同一个地方。你的任务是写一个程序,找到这样的路线。
镇上有n个景点,编号从1到N和M个双向道路编号从1到M。
两个景点可以通过多条道路连接,但没有道路连接本身景点。每一条观光路线是一个有序的道路编号,道路数k大于2。观光路线是无重复景点的环路。观光路线的长度是所有路线长度之和。您的程序必须找到长度最小的观光路线,或指定它是不可能的。

样例输入

4 6 //4个景点6条路
1 2 40 //双向路,长度。
1 3 50
1 40 60 //这个应该是出错了,不过不影响结果
2 3 10
2 4 30
3 4 20

样例输出:

2 3 4

思路:

这是到最小环+路径的问题,首先想到的是floyd算法,通过d[i][j] + map[i][k] + map[k][j] < mi求最小环,没找到就输出“No solution.”,每次更新最小环,都更新下路径数组ans[],用一个函数寻找i与j之间经过的点。用path[i][j]表示i到j最短路径上j前面的一个点。

代码:

#include <cstdio>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值