第6章第3節 Bellman Ford 解決負權邊

2021-09-18 04:33:02 字數 717 閱讀 1994

/*對所有的邊進行n-1次的鬆弛操作

檢測乙個圖是否有負權迴路:如果在n-1鬆弛之後最短路仍然會發生變化,則改圖必然存在負權迴路

在實際操作中,bellman-ford演算法經常會在未達到n-1輪鬆弛前就已經計算出最短路,n-1其實是最大值

因此可以新增乙個變數check用來標記陣列dis在本輪鬆弛中是否發生了變化,如果沒有發生變化,則可以提前跳出迴圈

*/#include "stdio.h"

int main()

//初始化dis陣列,這裡是1號頂點到其餘各個頂點的初始路程

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

dis[1] = 0;

//bellman-ford演算法核心語句

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

}//鬆弛完畢後檢測陣列dis是否有更新

if(check == 0)

}//檢測負權迴路

flag = 0;

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

}if(flag == 1)

else

}getchar();getchar();

return 0;}/*

示例輸入:

5 52 3 2

1 2 -3

1 5 5

4 5 2

3 4 3

示例輸出:

0 -3 -1 2 4

*/

《柯爾特思維教程》 第6章(行動) 第3節 縮小

學習目的 在有關某個問題的一大堆資訊中,你如何才能挑選出最適合你的 最關鍵的觀點?這就需要你學會使用 縮小 這種思維方法。問題 對於乙個推銷員來說,顧客是什麼?有許多關於這個話題的觀點 顧客是任何生意中最重要的人。顧客不必依靠我們,我們必須依靠顧客。顧客的光顧不是對我們工作的打擾,而是我們工作的目的...

第3章 第2 2節 預編譯

2.1 函式宣告整體提公升 2.2 變數宣告提公升 2.3 預編譯前奏 1.imply global 暗示全域性變數 即任何變數,如果變數未經宣告就賦值,此變數就為全域性物件所有。eg a 123 eg var a b 123 2.一切宣告的全域性變數,全是window的屬性。eg var a 12...

第3章 第2 2節 預編譯

2.1 函式宣告整體提公升 2.2 變數宣告提公升 2.3 預編譯前奏 1.imply global 暗示全域性變數 即任何變數,如果變數未經宣告就賦值,此變數就為全域性物件所有。eg a 123 eg var a b 123 2.一切宣告的全域性變數,全是window的屬性。eg var a 12...