最短路問題

2021-07-07 03:17:16 字數 1095 閱讀 9754

time limit:

5000ms memory limit:

65536kb

total submit:

16 accepted:

3 page view:

402submit

status

discuss

description

現在有n個城市,編號從1到n。現在已知從城市i到城市j需要走的時間為aij。m78要從城市1到城市n。m78有乙個飛行符,飛行符可以使得他瞬間通過一條邊或連續的兩條邊(連續走一條邊或兩條邊的時間為0)。問,m78從城市1到城市n,最少花費的時間。

input

多組輸入。每組第一行有乙個整數n,表示城市的數目。(2<=n<=1000)

接下來將輸入乙個n*n的矩陣。矩陣第i行第j列的數字aij表示從城市i到城市j,花費的時間為aij。(0<=aij<=10000 , aii=0 ,aij=aji)。如果aij=0,表示沒有這條路。

output

每組輸出乙個數字,表示m78從城市1到城市n花費的最少時間。特別的,如果m78到不到了城市n,輸出-1。

3

0 1 1

1 0 1

1 1 0

0

submit

status

discuss

題中把圖的構造直接告訴我們了,所以只需要用陣列存起來直接用floyd演算法,就可以求得最短路徑,不過之前我寫錯的地方是沒注意到應該雙向賦值。

#include #include#include#define inf 9999999

using namespace std;

int main()

}for(int k=1;k<=n;k++) //floyd模板

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

printf("%d\n",w[1][n]);}}

return 0;

}

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路問題

簡單的最短路問題 includeconst int maxnum 1002 const int maxint 100005 void dijkstra int n,int v,int dist,int c maxnum maxnum dist v 0 s v 1 依次將未放入s集合的結點中,取dis...

最短路問題

1.給定帶權圖g 其中每條邊 vi,vj 上的權w vi,vj 是乙個非負實數。計算從任給的乙個源點s到其他各節點的最短路徑 1.把所有結點分成兩組 第一組u包括已確定最短路徑的結點 第二組v u包括尚未確定最短路徑的結點 2.按最短路徑長度遞增的順序逐個把第二組的結點加到第一組中 直至從s出發可達...