ural 1004(floyd 求最小環)

2021-05-28 06:55:32 字數 663 閱讀 7953

poj暫時出問題。。就先做乙個這裡的題了。。。。簡單題。。。。求無向圖的最小環。。。floyd演算法。。。。

#include#include#includeusing namespace std;

const int inf = 100000000;

int maze[110][110], dis[110][110], path[110], pi;

int pre[110][110];

void get_path(int p1, int p2) else

path[pi++] = p1;

}inline bool check(int i, int j, int k)

int main() {

int n, m, i, j, k, mi, u, v;

while (scanf("%d", &n) && n > 0) {

scanf("%d",&m);

for (i = 1; i <= n; i++)

for (j = 1; j <= n; j++)

maze[i][j] = dis[i][j] = inf, pre[i][j] = 0;

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

scanf("%d%d%d", &u, &v, &k);

if(k

Ural 1004 FLOYD最小環問題

題目大意 給出一些雙向邊,求圖中的乙個最小環,當 被選中時,不能被選,按順序輸出這個最小環,無解則輸出。題目既然要求最小環,資料範圍還這麼小,容易聯想到 並且這裡是雙向邊也沒有什麼關係,因為只能選一條,但題目比較麻煩的地方就是要輸出這個環,我的處理好像和機房的人不一樣。我想到的辦法是對於每乙個 j的...

floyd求最小環

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

floyd求最小環

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