VIjosP1046觀光旅遊

2022-03-30 07:06:24 字數 1356 閱讀 4889

背景

湖南師大附中成為百年名校之後,每年要接待大批的遊客前來參觀。學校認為大力發展旅遊業,可以帶來一筆可觀的收入。

學校裡面有n個景點。兩個景點之間可能直接有道路相連,用dist[i,j]表示它的長度;否則它們之間沒有直接的道路相連。這裡所說的道路是沒有規定方向的,也就是說,如果從i到j有直接的道路,那麼從j到i也有,並且長度與之相等。學校規定:每個遊客的旅遊線路只能是乙個迴路(好霸道的規定)。也就是說,遊客可以任取乙個景點出發,依次經過若干個景點,最終回到起點。一天,xiaomengxian決定到湖南師大附中旅遊。由於他實在已經很累了,於是他決定盡量少走一些路。於是他想請你——乙個優秀的程式設計師——幫他求出最優的路線。怎麼樣,不是很難吧?(摘自《鬱悶的出納員》)

對於每組資料:

第一行有兩個正整數n,m,分別表示學校的景點個數和有多少對景點之間直接有邊相連。(n<=100,m<=10000)

以下m行,每行三個正整數,分別表示一條道路的兩端的編號,以及這條道路的長度。

對於每組資料,輸出一行:

如果該迴路存在,則輸出乙個正整數,表示該迴路的總長度;否則輸出「no solution.」(不要輸出引號)

這道題,我就想到了用floyd求最小環,事實證明這確實是正確的,但是我還有乙個疑問,最小環一定是連線起點和終點的麼?

注意初始化,因為初始化wa了兩次,還有memset函式的用法,感覺還是糊

1 #include2 #include3 #include4 #include5 #include6 #include7

#define maxn 100000+100

8#define ll long long

9#define inf 1e8

10int a,b,c,g[100][100],ans,dis[100][100

]; 11

using

namespace

std;

12 inline int

read()

1316

while(ch>='

0'&&ch<='

9') num=num*10+ch-'

0',ch=getchar();

17return num*f;18}

19int

main()

2033

for(int i=1;i<=m;++i)

3441

} 42

for(int k=1;k<=n;++k)

4351

if(ans!=inf) cout

52else cout<

no solution.

"<

54return0;

55 }

view code

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...

codevs 2611 觀光旅遊

某旅遊區裡面有 個景點。兩個景點之間可能直接有道路相連,用a i j 表示它的長度,否則它們之間沒有直接的道路相連。這裡所說的道路是沒有規定方向的,也就是說,如果從i到j有直接的道路,那麼從j到i也有,並且長度與之相等。旅遊區規定 每個遊客的旅遊線路只能是乙個迴路 好霸道的規定 也就是說,遊客可以任...

觀光旅遊(最小環問題)

在桑給巴爾島的adelton城鎮上有乙個旅遊機構。它們決定在提供許多的其它吸引之外,再向客人們提供旅遊本鎮的服務。為了從提供的吸引服務中盡可能地獲利,這個旅遊機構接收了乙個精明決定 在相同的起點與終點之間找出一最短路線。你的任務是編寫一條程式來找類似的的一條路線。在這個鎮上,有n個十字路口 編號1至...