ssl02模式,城市交通_ssl1636_floyd

 2023-12-06 阅读 28 评论 0

摘要:Description   有n個城市,編號1~n,有些城市之間有路相連,有些則沒有,有路則當然有一個距離。現在規定只能從編號小的城市到編號大的城市,問你從編號為1的城市到編號為n的城市之間的最短距離是多少? Input 先輸入一個n,表

Description

  有n個城市,編號1~n,有些城市之間有路相連,有些則沒有,有路則當然有一個距離。現在規定只能從編號小的城市到編號大的城市,問你從編號為1的城市到編號為n的城市之間的最短距離是多少?

Input

先輸入一個n,表示城市數,n小于100。?
下面的n行是一個n*n的鄰接矩陣map[i,j],其中map[i,j]=0表示城市i和城市j之間沒有路相連,否則為兩者之間的距離。

ssl02模式。

Output

輸出格式:一個數,表示最少要多少時間。?
輸入數據保證可以從城市1飛到城市n。?

Sample Input

11

0 5 3 0 0 0 0 0 0 0 0

5 0 0 1 6 3 0 0 0 0 0

3 0 0 0 8 0 4 0 0 0 0

0 1 0 0 0 0 0 5 6 0 0

0 6 8 0 0 0 0 5 0 0 0

0 3 0 0 0 0 0 0 0 8 0

0 0 4 0 0 0 0 0 0 3 0

0 0 0 5 5 0 0 0 0 0 3

0 0 0 6 0 0 0 0 0 0 4

0 0 0 0 0 8 3 0 0 0 3

0 0 0 0 0 0 0 3 4 3 0

Sample Output

13

思路:

因為是最短路所以想到最短路,n不大就用floyd。對于給定的鄰接矩陣作floyd然后輸出f[1,n]。

?

源代碼/pas:

?

varn,i,j,k:longint;f:array[1..500,1..500]of longint;
beginreadln(n);for i:=1 to n dofor j:=1 to n dobeginread(f[i,j]);if (f[i,j]=0)or(j<=i) thenf[i,j]:=maxlongint div 2;end;for k:=1 to n dofor i:=1 to n dofor j:=1 to n doif (k<>i)and(k<>j)and(i<>j)and(f[i,k]+f[k,j]<f[i,j]) thenf[i,j]:=f[i,k]+f[k,j];writeln(f[1,n]);
end.

轉載于:https://www.cnblogs.com/olahiuj/p/5781320.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/192157.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息