from hdu 1874
time limit:1s
memory limit:32mb
problem description
某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。
現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。
input
本題目包含多組資料,請處理到檔案結束。
每組資料第一行包含兩個正整數n和m(0output
對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.
sample input
3 3
0 1 1
0 2 3
1 2 1
0 23 1
0 1 1
1 2
sample output2
-1
最短路問題,沒有負權邊,dijkstra就可以ac掉。
這個題目有一些坑,比如兩個城市之間可能存在多條邊,這個在題目當中是沒有提到的,所以每次更新地圖的對應位置的時候,都應該先判斷一下。
#include
#include
using
namespace std;
int mp[
205]
[205];
//儲存一張地圖,表示某兩個城市的距離,在後續操作中我們將其賦值為0x3f3f3f3f(大於10000就可以)
int dis[
205]
;//代表從起始點到其他點的距離狀態
bool note[
205]
;//用於dijkstra中記錄乙個點是否被選中過
int n,m,f,t,w;
//點,邊,from,to,wage
intmain()
scanf
("%d %d"
,&f,
&t);
for(
int i =
0;i < n;
++i)
dis[i]
= mp[f]
[i];
//初始化dis
note[f]
=true
,dis[f]=0
;for
(int i =
1;i < n;
++i)
if(dis[t]
==0x3f3f3f3f
)printf
("-1\n");
else
printf
("%d\n"
,dis[t]);
}return0;
}
最短路 暢通工程續
description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。input ...
暢通工程續(最短路)
暢通工程續 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,...
暢通工程續 最短路徑問題
暢通工程續 problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需...