problem description
某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。
現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。
input
本題目包含多組資料,請處理到檔案結束。
每組資料第一行包含兩個正整數n和m(0
output
對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.
sample input
3 30 1 1
0 2 3
1 2 1
0 23 1
0 1 1
1 2
sample output
2-1
解題思路:
本題很明顯是在求最小路徑,首推弗洛伊德演算法,資料結構僅需要乙個二維陣列即可搞定。這裡需要注意一下兩點:1.如果圖是無向圖,在給road矩陣賦值時,一定記住其對稱位置一定也要賦值,例如road[1][3]=4,那麼road[3][1]也要賦值4,否則road[3][1]=inf,1到3是單向可達的,出錯。2.要有異常輸入的處理能力。很明顯road對角線上都是0,如果輸入時兩個一樣的值,因為road[i][i]>x不成立,所以road[i][i]還是0.好的,以下是**!
#includeusing namespace std;
int road[205][205];
int n, m;
const int inf = 0x3f3f3f3f;//通常設定乙個正無限值這麼設定
int main()
else
}} for (int i = 0; i < m; i++)
}cin >> start >> end;
for (int k = 0; k < n; k++)}}
} if (road[start][end] != inf)
else
} return 0;
}
hdoj1874 暢通工程續
dijsktra演算法 偽 清除所有標記 d 0 0,其他d i intmax for 1到n dijkstra演算法的應用 include using namespace std const int max 201 const int intmax 10000000 int map max max...
HDOJ 1874 最短路問題
題目大意 輸入n,m,分別表示有編號 0 n 1 n個城鎮和m調街道,接下來輸入m條道路及其所花費的時間,之後輸入起點和終點,最後求出從起點到終點所花費的最短時間。演算法思想 迪傑斯特拉演算法 1.根據輸入資訊建立鄰接矩陣,為無向圖。此處需要注意會有道路覆蓋的問題,此時應用花費時間最小的道路。2.用...
HDOJ1874 暢通工程續
題目鏈結 求單源最短路的題,因為邊權非負,所以可以用dijkstra。這題有一點需要注意的地方是有重邊,在讀資料時取較小的即可。view code 1 include 2 include 3 define min a,b a 4 define n 200 5 define inf 2000000 6...