這題就是floyd變形,只要理解了floyd演算法,題目還是不難的。不過我還是wa了一次,原理是在執行floyd的時候,誤加了兩個判斷,以為當i,j未被標記的時候,i到j的路徑不必更新,其實這是錯的,去掉以後就過了。
/** hdu3631/win.cpp
* created on: 2011-9-6
* author : ben
*/#include
<
cstdio
>
#include
<
cstdlib
>
#include
<
cstring
>
#include
<
cmath
>
#include
<
algorithm
>
using
namespace
std;
const
intsize
=310
;const
intmax
=0x7fffffff
;int
map[size][size];
bool
marked[size];
intn, m;
void
init()
map[i][i] =0
;}for(
intk =0
; k
<
m; k
++) }}
void
floyd(
intk) }}
}void
work()
if(t
>0)
printf(
"case %d:\n",
++t);
init();
memset(marked,
false
, sizeof
(marked));
for(
inti =0
; i
<
q; i
++)
else
} else
else
} else}}
}}intmain()
多源最短路
題目描述 已知n個點 n 100 給你n n的方陣,a i,j 表示從第i個點到第j個點的直接距離。現在有q個詢問,每個詢問兩個正整數,a和b,讓你求a到b之間的最短路程。滿足a i,j a j,i 輸入描述 第一行乙個正整數n,接下來n行每行n個正整數,滿足a i,i 0,再一行乙個q,接下來q行...
多源最短路
題目描述 已知n個點 n 100 給你n n的方陣,a i,j 表示從第i個點到第j個點的直接距離。現在有q個詢問,每個詢問兩個正整數,a和b,讓你求a到b之間的最短路程。滿足a i,j a j,i 輸入描述 第一行乙個正整數n,接下來n行每行n個正整數,滿足a i,i 0,再一行乙個q,接下來q行...
多源最短路
時間限制 1 s 空間限制 128000 kb 題目等級 gold 已知n個點 n 100 給你n n的方陣,a i,j 表示從第i個點到第j個點的直接距離。現在有q個詢問,每個詢問兩個正整數,a和b,讓你求a到b之間的最短路程。滿足a i,j a j,i 第一行乙個正整數n,接下來n行每行n個正整...