背景 background
這次小杉來到了經典美劇《越獄》的場景裡……
他被抓起來了(-.-幹嘛幻想這麼鬱悶的場景……)。
小杉身為新一代的scofield,在挖了半個月之後終於挖通牢房裡的地道。
在地道裡,無數的管道路線困惑了他。
(若對情節有任何疑問,請**原劇)
描述description
小杉看了看自己的紋身,明白了整個管道網是由n個小房間和若干小房間之間的單向的管道組成的。
小房間編號為不超過n的正整數。
每個管道都有乙個人品限制值,小杉只能在人品不超過該限制值時通過。
小杉一開始在房間1,現在小杉想知道,每個小房間他最多能夠以人品多少的狀態到達。
注意,小杉的人品在出發以後是不會改變的。
第一行有乙個正整數n(1<=n<=2000)。
接下來若干行描述管道,每行三個正整數a,b,r(1<=a,b<=n,1<=r<1e5,a!=b),表示a房間有一條到達b房間的人品限制值為r的管道(注意從b房間不可由此管道到達a房間,即管道是單向的,每組a,b至多只出現一次)。
整個輸入資料以一行000結束。
對每組測試資料輸出n-1行,分別表示對於2到n號的小房間,小杉最多能夠以人品多少的狀態到達。若某房間小杉不能到達,請輸出0。
4 1 2 30
1 3 20
2 3 25
3 4 30
2 4 20
0 0 0
30 25
25注釋hint
對於樣例資料:
小杉最多能夠在人品為30的情況下到達小房間2(1->2)
小杉最多能夠在人品為25的情況下到達小房間3(1->2->3)
小杉最多能夠在人品為25的情況下到達小房間4(1->2->3->4)
很顯然是最短路,我打了乙個spfa
和普通的spfa不同的地方在於
if
d[x]+w
[k][y]then
換成了
if
min(d[v[(h-1) mod
max+1]],w[k])>d[y[k]] then
剛開始擔心爆記憶體,算了老半天,省了所有能省的記憶體,結果沒爆,其實就算不省也不會爆……
longint 4位元組 int64 8位元組時間
複雜度o
(km)
m為邊的
條數,最
大為n2
,k為小
常數
const
max=2000;
var n,i,j,k,t:longint;
w:array[1..4000000]of longint;
y,ne:array[1..4000000]of integer;
d,ls:array[1..2000]of longint;
b:array[1..2000]of boolean;
v:array[1..2000]of longint;
function
min(a,b:longint):longint;
begin
if athen
exit(a) else
exit(b);
end;
procedure
spfa;
var i,j,k,h,t:longint;
begin
fillchar(b,sizeof(b),true);
h:=0;t:=1;v[1]:=1;b[1]:=false;d[1]:=maxlongint;
while hdo
begin
inc(h);
k:=ls[v[(h-1) mod max+1]];
while k>0
dobegin
if min(d[v[(h-1) mod max+1]],w[k])>d[y[k]] then
begin
d[y[k]]:=min(d[v[(h-1) mod max+1]],w[k]);
if b[y[k]] then
begin
b[y[k]]:=false;
inc(t);
v[(t-1) mod max+1]:=y[k];
end;
end;
k:=ne[k];
end;
b[v[(h-1) mod max+1]]:=true;
end;
end;
begin
readln(n);
readln(i,j,k);
while (i<>0)and(j<>0)and(k<>0)do
begin
if j=1
then
begin readln(i,j,k);continue;end;
inc(t);
y[t]:=j;w[t]:=k;ne[t]:=ls[i];
ls[i]:=t;
readln(i,j,k);
end;
spfa;
for i:=2
to n do
writeln(d[i]);
end.
spfa SSL 1535 想越獄的小杉
description 小杉看了看自己的紋身,明白了整個管道網是由n個小房間和若干小房間之間的單向的管道組成的。小房間編號為不超過n的正整數。每個管道都有乙個人品限制值,小杉只能在人品不超過該限制值時通過。小杉一開始在房間1,現在小杉想知道,每個小房間他最多能夠以人品多少的狀態到達。注意,小杉的人品...
Vijos P1391 想越獄的小杉
背景 這次小杉來到了經典美劇 越獄 的場景裡 他被抓起來了 幹嘛幻想這麼鬱悶的場景 小杉身為新一代的scofield,在挖了半個月之後終於挖通牢房裡的地道。在地道裡,無數的管道路線困惑了他。若對情節有任何疑問,請 原劇 描述小杉看了看自己的紋身,明白了整個管道網是由n個小房間和若干小房間之間的單向的...
想越獄的小衫
故事背景 這次小杉來到了經典美劇 越獄 的場景裡 他被抓起來了 幹嘛幻想這麼鬱悶的場景 小杉身為新一代的scofield,在挖了半個月之後終於挖通牢房裡的地道。在地道裡,無數的管道路線困惑了他。若對情節有任何疑問,請 原劇 問題描述 小杉看了看自己的紋身,明白了整個管道網是由n個小房間和若干小房間之...