杭電2066 Dijkstra演算法

2021-10-01 06:53:35 字數 1117 閱讀 7451

題目鏈結hdu2066

用dijkstra演算法求單源最短路徑,由於題中源點有多個,所以要多次運用dijkstra演算法,然後比較求得最短距離。這裡要注意的就是可能有重邊,所以在輸入的時候要進行判斷,選擇最小的那條邊,下面是ac**。

#include

#include

#include

#include

using

namespace std;

#define inf 0x3fffffff

int link[

1005];

//鄰接的城市

int like[

1005];

//想去的城市

int dis[

1005];

//距離陣列,dis[j]表示源點到j的最短距離

int vis[

1005];

//標記結點

int w[

1005][

1005];

//鄰接矩陣

void

dijkstra

(int s,

int n)

vis[s]=1

;//標記訪問源點

dis[s]=0

;//源點到本身的距離為0

int k=s;

for(

int i=

0;i1;i++)}

vis[k]=1

;//標記該結點已求得最短路徑

for(

int j=

1;j<=n;j++

)//鬆弛操作}}

}int

main()

for(

int i=

0;i)scanf

("%d"

,&link[i]);

for(

int i=

0;i)scanf

("%d"

,&like[i]);

int min=inf;

for(

int i=

0;iprintf

("%d\n"

,min);}

return0;

}

最短路徑 Dijkstra演算法 杭電2544

開始因為錯寫了m和n,runtime error了幾次,用dijkstra演算法時,迴圈中應該是點的數目,也就是n,而不是m 注意該題是無向圖 include includeusing namespace std define data 100000000 注意取值,100000000才可以通過,其...

HDOJ 杭電1874 暢通工程(Floyd演算法)

2018 5 1 我用的是floyd演算法,不得不說,這個演算法還是相當的優美了 雖然說時間複雜度達到了o n 3 但是 還是相當簡潔了!對於這個題目而言,有幾點需要注意的地方 1 賦值是雙向的,比如說a,b之間有一條要花費time時間的路,那麼我們需要將x a b 與x b a 都賦值為time。...

杭電 2066 乙個人的旅行

此題原來提交了乙份floyd warshall演算法的 然後結果是超時,所以寫了乙個dijkstra演算法的,ac!include 樣例可能的最大的邊數 define maxn 2000 初始化用到的最大值 define inf 100000 儲存城市與城市之間耗費時間的最小權值 intmat ma...