HDOJ 2544 最短路(DIJ 優先佇列)

2021-07-15 22:53:05 字數 1084 閱讀 9285

最短路

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎? 

input

輸入包括多組資料。每組資料第一行是兩個整數n、m(n<=100,m<=10000),n表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為n的路口是賽場所在地,m則表示在成都有幾條路。n=m=0表示輸入結束。接下來m行,每行包括3個整數a,b,c(1<=a,b<=n,1<=c<=1000),表示在路口a與路口b之間有一條路,我們的工作人員需要c分鐘的時間走過這條路。 

輸入保證至少存在1條商店到賽場的路線。 

output

對於每組輸入,輸出一行,表示工作人員從商店走到賽場的最短時間

讀一下題,求從第n個點與第乙個點之間的最短距離,明顯是單源最短路的**,我們來學習一下單源最短路,這裡使用的是dijkstra演算法,演算法詳見《計算機軟體基礎》p100-p101.

直接來看**,這裡用vector來存點和邊,struct裡面有點和邊長,再來看佇列的用處,每次彈出的都是與源點距離最短的邊,這個點現在就已經是最短的路徑了,用use來儲存乙個這個點,再用這個點來鬆弛與這個點相鄰的點,如果鬆弛成功說明下乙個點有更短的路徑,將下乙個點入佇列,佇列裡面可能有相同的點,但是彈出的是與源點距離最短的點,所以只有第一次彈出的是最小,在彈出的時候判斷一下是否出現過,注意細節問題。

#include#include#include#include#includeusing namespace std;

struct node

};int main()}}

printf("%d\n",dis[n]);

}return 0;

}

HDOJ 2544 最短路 最短路

最基礎的單源最短路徑 dijkstra 複雜度o n 2 include include include include include include include include include include include include include include include i...

dij最短路 變形

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。...

HDU 2544 最短路 最短路

最近複習了最短路徑的演算法,就寫了4個版本的測試。正好是模板題,就果斷a之。dijkstar版本 include include include include include include includeusing namespace std define n 110 define max 99...