題目: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 2view codeusing
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 }
hdu1874 暢通工程續(最短路徑)
problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...
杭電1874 暢通工程續 SPFA演算法
problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...
hdu1874 暢通工程續 (最短路)
已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。經典的單源 最短路 用dijkstra,這裡要注意的是有重邊,取最小的那個。已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。經典的單源 最短路 用dijkstra,這裡要注意的是有重邊,取最小的那個。include in...