觀光旅遊(最小環問題)

2021-09-18 03:08:31 字數 1415 閱讀 3137

在桑給巴爾島的adelton城鎮上有乙個旅遊機構。它們決定在提供許多的其它吸引之外,再向客人們提供旅遊本鎮的服務。 為了從提供的吸引服務中盡可能地獲利,這個旅遊機構接收了乙個精明決定:在相同的起點與終點之間找出一最短路線。

你的任務是編寫一條程式來找類似的的一條路線。

在這個鎮上,有n個十字路口(編號1至n),兩個十字路口之間可以有多條道路連線,有m條道路(編號為1至m)。但沒有一條道路從乙個十字路口出發又回到同乙個路口。

每一條觀光路線都是由一些路組成的,這些道路序號是:y1, …, yk,且k>2。第yi(1<=i<=k-1)號路是連線第xi號十字路口和第x[i+1]號十字路口的;其中第yk號路是連線第xk號十字路口和第x[k+1]號十字路口。

而且,所有的這些x1,…,xk分別代表不同路口的序號。在某一條觀光路線上所有道路的長度的和就是這條觀光路線的總長度。換言之l(y1)+l(y2)+…+l(yk)的和, l(yi)就是第yi號觀光路線的長度。

你的程式必須找出類似的一條路線:長度必須最小,或者說明在這個城鎮上不存在這條觀光路線。

每組資料的第一行包含兩個正整數:十字路口的個數n(n<=100),另乙個是道路的 數目m(m<10000)。接下來的每一行描述一條路:每一行有三個正整數:這條路連線的兩個路口的編號,以及這條路的長度(小於500的正整數)。

每一行輸出都是乙個答案。如果這條觀光路線是不存在的話就顯示「no solution」;或者輸出這條最短路線的長度。

571

4113

3003110

12162

310025

155320

61
431

21013

201430

-1

no solution
這道題是一道最小環問題,我們可以用floyed演算法來做。

#include

#include

#include

using

namespace std;

int n,m,a[

101]

[101

],f[

101]

[101

],x,y,ans;

intmain()

for(

int k=

1;k<=n;k++)if

(ans!=a[0]

[0])

printf

("%d"

,ans)

;//如可到達則正常輸出

else

printf

("no solution");

//否則輸出no solution

return0;

}

觀光旅遊 Floyed 最小環

time limit 20000ms memory limit 65536k total submit 292 accepted 144 case time limit 2000ms description 在桑給巴爾島的ade lton adelton adelto n城鎮上有乙個旅遊機構。它們決...

SSL1763 觀光旅遊 最小環問題

在相同的起點與終點之間找出一最短路線。你的任務是編寫一條程式來找類似的的一條路線。在這個鎮上,有n個十字路口 編號1至n 兩個十字路口之間可以有多條道路連線,有m條道路 編號為1至m 但沒有一條道路從乙個十字路口出發又回到同乙個路口。每一條觀光路線都是由一些路組成的,這些道路序號是 y1,yk,且k...

vijosP1046 觀光旅遊(最小環)

vijosp1046 觀光旅遊 思路 floyd求解最小環。1 include2 using namespace std 34 const int maxn 100 10 5 const int inf 1e8 6int f maxn maxn dist maxn maxn 7int n,m,min...