暢通工程續 最短路dijkstra

2021-10-19 04:30:16 字數 1518 閱讀 9396

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 output
2

-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 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需...