比赛 |
20121107 |
评测结果 |
AAAAA |
题目名称 |
最难的任务 |
最终得分 |
100 |
用户昵称 |
稠翼 |
运行时间 |
0.091 s |
代码语言 |
Pascal |
内存使用 |
0.41 MiB |
提交时间 |
2014-09-20 19:04:46 |
显示代码纯文本
program cogs1254;
type nod=record
y,n,d:longint;
end;
var
x,t,i,j,tt,z,n,m,h,y,dd,u,v,p:longint;
bb:array[0..202]of boolean;
b:array[0..21000]of nod;
s,q,d:array[0..202]of longint;
procedure init;
begin
assign(input,'hardest.in');reset(input);
assign(output,'hardest.out');rewrite(output);
end;
procedure add(p,q,dd:longint);
begin
inc(t);
b[t].y:=q;b[t].d:=dd;
b[t].n:=s[p];s[p]:=t;
end;
procedure main;
begin
readln(z);
for tt:=1 to z do
begin
readln(n,m);
t:=0;
fillchar(s,sizeof(s),0);
for i:=1 to m do
begin
readln(u,v,dd);
add(u,v,dd);
add(v,u,dd);
end;
fillchar(bb,sizeof(bb),1);
bb[1]:=false;
fillchar(d,sizeof(d),$0f);
d[1]:=0;
h:=0;t:=1;q[1]:=1;
while h<>t do
begin
inc(h);if h>200 then h:=1;
x:=q[h];p:=s[x];
while p<>0 do
begin
y:=b[p].y;
if d[y]>d[x]+b[p].d then
begin
d[y]:=d[x]+b[p].d;
if bb[y] then
begin
inc(t);if t>200 then t:=1;
q[t]:=y;bb[y]:=false;
end;
end;
p:=b[p].n;
end;
bb[x]:=true;
end;
if d[n]=d[0] then writeln(-1) else writeln(d[n]);
end;
end;
begin
init;
main;
end.//complete by chouyi20140919