讨论 / rqnoj341 星门跳跃 错在哪里?
余洋go 2012-11-07 23:22:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeost[5]

得分: 80分

提交日期: 2012-10-18 17:15:00

有效耗时: 3141毫秒

测试结果1: 通过本测试点|有效耗时203ms

测试结果2: 通过本测试点|有效耗时188ms

测试结果3: 通过本测试点|有效耗时172ms

测试结果4: 通过本测试点|有效耗时187ms

测试结果5: 通过本测试点|有效耗时203ms

测试结果6: 通过本测试点|有效耗时641ms

测试结果7: 通过本测试点|有效耗时875ms

测试结果8: 通过本测试点|有效耗时672ms

测试结果9: 选手程序运行超过时限

测试结果10: 测试结果错误.错误结果为:12577

正确结果应为:8087

type

pnode=^tnode;

tnode=record

d,q:longint;

next:pnode;

end;

var

n:longint;

dian:array[0..30000] of pnode;

dist:array[0..30000] of longint;

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

procedure init;

begin

assign(input,'yy.in');

assign(output,'yy.out');

reset(input);

rewrite(output);

end;

procedure terminate;

begin

close(input);

close(output);

halt;

end;

procedure insert(a,b,c:longint);

var

p:pnode;

begin

new(p);

p^.d:=b;

p^.q:=c;

p^.next:=dian[a];

dian[a]:=p;

end;

procedure readdata;

var

m,i,a,b,c:longint;

begin

read(n,m);

for i:=1 to m do

begin

read(a,b,c);

insert(a,b,c);

insert(b,a,c);

end;

end;

procedure main;

var

i,j,k,min:longint;

p:pnode;

begin

fillchar(v,sizeof(v),0);

fillchar(dist,sizeof(dist),$7f);

dist[1]:=0;

for i:=1 to n do

begin

min:=maxlongint;

k:=0;

for j:=1 to n do

if (not(v[j])) and (dist[j]<min) then

begin

k:=j;

min:=dist[j];

end;

//if k=0 then break;

if k=n then

begin

writeln(dist[k]);

terminate;

end;

v[k]:=true;

p:=dian[k];

while p<>nil do

begin

if (not v[p^.d]) and(dist[p^.d]-dist[k]>p^.q) then

dist[p^.d]:=dist[k]+p^.q;

p:=p^.next;

end;

end;

writeln(dist[n]);

end;

begin

init;

readdata;

main;

terminate;

end.

#1 Fortran95@2012-11-07 23:22:00
回复 删除
评测机的问题吧

显然你这个程序是超时的,从第9个点就能看出来。所以说第10个点不可能跑出来,12577实际上是第8个点的答案(拿个writeln(0)骗出所有答案就能发现),因为后两个点卡了,RQ的奇葩评测机直接截了第8个答案到第10个上

查看更多回复
提交回复