讨论 / 牛人来看!
kingoffighters 2008-10-30 21:38:00
点我顶贴 收藏 删除
测试结果1: 选手程序无输出

测试结果2: 选手程序无输出

测试结果3: 选手程序无输出

测试结果4: 选手程序无输出

测试结果5: 选手程序无输出

测试结果6: 选手程序无输出

测试结果7: 选手程序无输出

测试结果8: 选手程序无输出

测试结果9: 选手程序无输出

测试结果10: 选手程序无输出

var d:array[1..30000,1..30000] of integer;v:array[1..3000] of boolean;

n:integer;m:longint;

procedure init;

var i:longint;a,b,c:integer;

begin

readln(n,m);

for i:=1 to m do

begin

readln(a,b,c);

d[a,b]:=c;

end;

end;

procedure dis;

var i,j,p:integer;max:integer;

begin

for i:=1 to n do

begin

max:=maxint;

for j:=2 to n do

if (max>d[i,j]) and (d[i,j]<>0) and not(v[i]) then

begin

max:=d[i,j];

p:=j;

end;

v[p]:=true;

for j:=2 to n do

if (d[p,j]<>0) and (d[1,p]<>0) then

if (d[1,j]>d[1,p]+d[p,j]) or (d[1,j]=0) then

d[1,j]:=d[1,p]+d[p,j];

end;

end;

begin

init;

dis;

write(d[1,n]);

end.

#1 wish@2008-09-11 05:17:00
回复 删除
你这个 O(n^2) 的算法,有输出也满分不了的
#2 Zx.MYS@2008-09-11 05:18:00
回复 删除
[1..30000,1..30000]

在RQNOJ上开这么大数组结果就是无输出……

#3 kingoffighters@2008-10-29 04:20:00
回复 删除
这道题是用什么做啊??谁给讲讲??
#4 飞雪天涯@2008-10-29 08:31:00
回复 删除
我开这么大的数组,可是NO COMPILED!
#5 LIFE@2008-10-30 17:30:00
回复 删除
用bellman,处理边,每一次都进行以下RELAX

下面是核心代码:

procedure relax (a,b,d:longint);

var

x:longint;

begin

x:=far[a]+d;

if x<far [b] then

begin

far[b]:=x;

flag:=false;

end;

end;

repeat

flag:=true;

for i:=1 to 2*m do

relax (ipt[i].x,ipt[i].y,ipt[i].di);

until flag;

#6 世纪末的魔术师@2008-10-30 21:38:00
回复 删除
这题要邻接表+SPFA。
查看更多回复
提交回复