杭電1874暢通工程續 最短路徑

2022-05-05 06:18:07 字數 1130 閱讀 8540

題目: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 2sample output

2 -1

思路:flyod演算法:從a到b的距離等於min(ab,ac+cb);引入中間點c;

特點:**就四行,超短!!!

開始時我也好奇為什麼ab之間的距離只會經過1個點呢,後來想了下發現flyod演算法是動態更新的;

上**:

1 #include 2

using

namespace

std;34

int d[250][250];5

intn,m;67

int main(void)8

21for(int k=0;k//

22for(int i=0;i//

23for(int j=0;j//

24 d[i][j]=min(d[i][j],d[i][k]+d[k][j]);//

flyod核心演算法,就四行

25int

a,b;

26 scanf("

%d%d

",&a,&b);

27if(d[a][b]==1e9)

28 printf("

-1\n");

29else

30 printf("

%d\n

",d[a][b]);31}

32 }

view code

hdu1874 暢通工程續(最短路徑)

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

杭電1874 暢通工程續 SPFA演算法

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

hdu1874 暢通工程續 (最短路)

已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。經典的單源 最短路 用dijkstra,這裡要注意的是有重邊,取最小的那個。已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。經典的單源 最短路 用dijkstra,這裡要注意的是有重邊,取最小的那個。include in...