單源最短路之 優化的Bellman Ford演算法

2021-08-31 05:00:49 字數 715 閱讀 9998

#include using namespace std;

const double max = -1000000.0;

typedef struct

edge;

edge e[201];

int n; //貨幣種數

int m; //銀行總數

int s; //初始貨幣型別

double v; //初始財產

double d[101]; //源點s到各點的最小距離

int main()

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

d[i] = max;

d[s] = v;

/*優化的bellman-ford

從第一次到第n-1次迴圈中,若有一次所有的邊都沒有鬆弛,以後所有邊也不需要鬆弛,顯然演算法可以終止!

bellman-ford演算法在做完n-1次之後,若不存在正環,肯定會收斂,即第n次跳出(此時還要判斷d[s]的值是否增加)。再做一次,

即到第n次還滿足鬆弛條件,說明存在正環*/

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

}if(!flag) break;

} if(i == n + 1)

cout<<"yes\n";

else

return 0;

}

參加poj1860,3259

單源最短路

題目描述 給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。輸入第一行包含三個整數n m s,分別表示點的個數 有向邊的個數 出發點的編號。接下來m行每行包含三個整數fi gi wi,分別表示第i條有向邊的出發點 目標點和長度。輸出n行,每行n個用空格分隔的整數,其中第i個整數表示從點s出發...

單源最短路

恢復內容開始 dijkstra spfa floyd多源變單源 熱浪 模板題 使用spfa過 spfa 從佇列中取出點進行鬆弛操作 使用st記錄點是否還在佇列中 如果這個點本來就存在佇列中那麼就重複加入點了void spfa int s 信使 廣播式求時間 求廣播所有點的最短時間 每個點接受到向他的...

多源最短路和單源最短路

多源最短路 例題 usaco08open clear and present danger s 單源最短路例題 dijkstra求最短路 i 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第...