ssl1761 城市問題

2021-07-30 02:48:51 字數 1654 閱讀 8423

城市問題

time limit:10000ms  memory limit:65536k

total submit:242 accepted:89 

case time limit:1000ms

description

設有n個城市,依次編號為0,1,2,……,n-1(n<=100),另外有乙個檔案儲存n個城市之間的距離(每座城市之間的距離都小於等於1000)。當兩城市之間的距離等於-1時,表示這兩個城市沒有直接連線。求指定城市k到每乙個城市i(0<=i,k<=n-1)的最短距離。 

input

第一行有兩個整數n和k,中間用空格隔開;以下是乙個nxn的矩陣,表示城市間的距離,資料間用空格隔開。

output

輸出指定城市k到各城市間的距離(從第0座城市開始,中間用空格分開)

sample input

3 1

0 3 1

3 0 2

1 2 0

sample output

3 0 2

source

elba

var

a:array[0..1000,0..1000]of longint;

l:array[0..1000]of longint;

v:array[0..1000]of boolean;

n,k,i,j,kk:longint;

min:real;

begin

readln(n,k);

k:=k+1;//0到n-1個城市,所以要+1(理論上後面的迴圈用"0 to n-1"也可以,但是就是錯了...)

for i:=1 to n do

begin

for j:=1 to n do

begin

read(a[i,j]);

if a[i,j]=-1 then a[i,j]:=maxlongint;

end;

readln;//換行

end;

fillchar(v,sizeof(v),true);

v[k]:=false;

for i:=1 to n do l[i]:=a[k,i];

for i:=1 to n do

begin

min:=maxlongint;

for j:=1 to n do

if (v[j])and(l[j]0 then

begin

v[kk]:=false;

for j:=1 to n do

if (v[j])and(l[j]>a[kk,j]+l[kk])and(a[kk,j]<>maxlongint)then l[j]:=l[kk]+a[kk,j];//新條件判斷是否連通

end;

end;

for i:=1 to n do

write(l[i],' ');//城市k到各城市間的距離

end.

//詳見上一條部落格,只改了輸入和判斷條件(一下水2題的快感~)

SSL ZYC 1761 城市問題

題目大意 給出n個城市兩兩之間的距離 距離為 1則為沒有直接連線的路 求第m個城市到各個城市的最短距離。注意 這裡城市的編號從0開始,也就是說,如果有100個城市,則每個城市的編號為0 1 99!思路 也就是說,如果你用1 n來表示城市的編號,你最終輸出的城市編號應該是m 1!然後,回歸正題 這是一...

SSLOJ1761 城市問題

設有n個城市,依次編號為0,1,2,n 1 n 100 另外有乙個檔案儲存n個城市之間的距離 每座城市之間的距離都小於等於1000 當兩城市之間的距離等於 1時,表示這兩個城市沒有直接連線。求指定城市k到每乙個城市i 0 i,k n 1 的最短距離。第一行有兩個整數n和k,中間用空格隔開 以下是乙個...

城市問題 Floyd

description 設有n個城市,依次編號為0,1,2,n 1 n 100 另外有乙個檔案儲存n個城市之間的距離 每座城市之間的距離都小於等於1000 當兩城市之間的距離等於 1時,表示這兩個城市沒有直接連線。求指定城市k到每乙個城市i 0 i,k n 1 的最短距離。input 第一行有兩個整...