最短路演算法(1) bellman ford演算法

2021-07-25 05:43:07 字數 784 閱讀 4853

/*問題概述: 成都的大街上有n個路口,標號為1的路口是學校所在地,標號為n的路口是家所在地,m則表示在成都有幾條路,輸入3個整數a、b、c表示從

a路口到b路口有路可走,且要花費c分鐘,求從學校到家最短時間

輸入樣例: 對應輸出:

3 3 2

1 2 5

2 3 5

3 1 2

*//*bellman ford鬆弛法(專業解決負環問題):

功能: 可以求出單個源點到其他頂點最短路徑

適用: 有向圖 √ 無向圖 √ 權值為正 √ 權值為負 √

複雜度: n*m(複雜度較高)

核心:

*/#includetypedef struct

road;

int main(void)

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

scanf("%d%d%d", &s[i].u, &s[i].v, &s[i].len);

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

d[i] = 100000000;

for(i=1;i<=n-1;i++) /*若在n-1次迴圈後仍可以更新d陣列,則說明存在負環,因為既然不包含負環,那麼最短路除了源點以外最多隻經過n-1個點*/

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

{x = s[j].u, y = s[j].v;

if(d[x]+s[j].len

最短路徑演算法 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

最短路演算法1(Dijkstra演算法)

一.迪傑斯特拉演算法原理 運用貪心的思想來處理最短路問題,先從起點開始,遍歷與起點有相連的邊,然後更新相連點的權值 標記起點 再從與起點相連邊中權值最小的點為新起點 就是這裡用了貪心,該起點應沒被標記過 重複以上操作n 1 次 看不懂很正常,看下下面的例子就大概懂了 二.關於迪傑斯特拉演算法時間複雜...

最短路演算法

常用的最短路演算法有三種 disjkstra,floyd,ballman floyd 一 disjkstra演算法 dijkstra演算法要求圖上的權非負數。同樣使用於無向圖 html view plain copy include stdio.h hdu 2544 define maxsum 0x...