hdu1599(最小環問題)

2022-09-03 20:09:16 字數 1090 閱讀 1290

problem description

杭州有n個景區,景區之間有一些雙向的路來連線,現在8600想找一條旅遊路線,這個路線從a點出發並且最後回到a點,假設經過的路線為v1,v2,....vk,v1,那麼必須滿足k>2,就是說至除了出發點以外至少要經過2個其他不同的景區,而且不能重複經過同乙個景區。現在8600需要你幫他找一條這樣的路線,並且花費越少越好。

input

第一行是2個整數n和m(n <= 100, m <= 1000),代表景區的個數和道路的條數。

接下來的m行裡,每行包括3個整數a,b,c.代表a和b之間有一條通路,並且需要花費c元(c <=

100)。

output

對於每個測試例項,如果能找到這樣一條路線的話,輸出花費的最小值。如果找不到的話,輸出"it's

impossible.".

sample input

3 31 2 1

2 3 1

1 3 1

3 31 2 1

1 2 3

2 3 1

sample output

3it's impossible.

分析:floyd演算法求解即可;

易錯:1.ans=max(map[i][j]+g[i][k]+g[j][k], ans)  中map[i][j]為最短路,g[i][j]為原始資料;

2.求解ans時要特判i!=j以防ans被賦值為零。

ac**:

#include#include

#include

using

namespace

std;

int g[110][110], n, m, ans, map[110][110

];int main(void

)

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

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

if(ans<214748364) cout << ans

it's impossible.

"<}

}

HDU1599,Floyd求最小環

看了別人的題解,然後做出來的。file name main.cpp author eagles mail none created time 2018年09月08日 星期六 15時36分55秒 description hdu1599 include include include include u...

最小環問題

floyd找最小環 模板 mp i j mp i j mp i j 記錄i ii到j jj的最短路,dis i j dis i j dis i j 代表原始圖的頂點間的關係 非i ii到j jj的最短路 ll ans inf ans為最小環的長度 for int k 1 k n k for int ...

最小環問題 Floyed

解題報告 要通過此題就要明白 flo yedfloyed floyed 演算法原理及其每步的含義。for int k 1 k n k 其本質就是動態規劃 k作為階段必須置於最外層,i,j作為附加狀態置於內層 mp可以理解為 經過若干個編號不超過k的節點從i到j的最短路,進而轉化為兩個子問題 1.經過...