HDU1599,Floyd求最小環

2021-08-27 16:15:34 字數 1088 閱讀 1236

看了別人的題解,然後做出來的。

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

***> file name: main.cpp

> author:eagles

> mail:none

> created time: 2023年09月08日 星期六 15時36分55秒

> description:hdu1599

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#include

#include

#include

#include

using namespace std;

#define n 110

int n,m;

int dis[n][n],mp[n][n];

const int inf=111111;

void init()

}for (int i=0; i

}void floyd()

}for (int j=0; j}}

if (sum >= inf)

printf("it's impossible.\n");

else

printf("%d\n",sum);

}int main()

return 0;

}

在上述**中,最外層的i點被當做j,k之外的第三點,i->j,j->k,k->i構成乙個環,在更新dis[j][k]之前需要先進行判斷,以保證k點沒有在dis[j][k]之中(不然構不成環).

hdu1599(最小環問題)

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

floyd求最小環

floyd求最小環 1 定義 通常來說最小環是針對有向圖而言 從乙個點出發,經過一條簡單路徑回到起點成為環.圖的最小環就是所有環中長度最小的.2.怎樣求最小環呢?的解決方法 dijkstra 任意乙個環的權值,我們都可以看成兩個有邊相連的結點i j的直接距離加上i j間不包含邊 邊i j 的最短路徑...

floyd求最小環

其實floyd求最小環就相當於找出乙個一條只包括1到k 1中節點的路徑,然後把這個路徑與k這個節點相連。這樣是正確的原因是,最小環中一定有乙個最大節點k,當最外層節點是k時,我們一定會列舉到k兩端的兩個節點,這樣就統計出了答案。至於為什麼不能直接用最短路徑,而是要用前k 1個節點跑出來的最短路徑,是...