比赛 |
20121107 |
评测结果 |
AAAAA |
题目名称 |
最难的任务 |
最终得分 |
100 |
用户昵称 |
RoyJames |
运行时间 |
0.085 s |
代码语言 |
Pascal |
内存使用 |
0.43 MiB |
提交时间 |
2012-11-07 11:50:42 |
显示代码纯文本
program hardest;
const
lim=10000;
var
t,n,m,i,a,b,c,h,cnt,tot:longint;
d,head:array[1..200]of longint;
v:array[1..200]of boolean;
next,e,w:array[1..20000]of longint;
q:array[0..lim]of longint;
procedure insert(u,v,len:longint);
begin
inc(tot);
next[tot]:=head[u];
head[u]:=tot;
e[tot]:=v;
w[tot]:=len;
end;
begin
assign(input,'hardest.in');
assign(output,'hardest.out');
reset(input);
rewrite(output);
readln(cnt);
while cnt>0 do
begin
readln(n,m);
fillchar(head,sizeof(head),0);
tot:=0;
for i:=1 to m do
begin
readln(a,b,c);
insert(a,b,c);
insert(b,a,c);
end;
for i:=1 to n do d[i]:=maxlongint shr 1;
fillchar(v,sizeof(v),0);
d[1]:=0;
h:=0;
t:=1;
q[1]:=1;
v[1]:=true;
while h<t do
begin
h:=(h+1)mod lim;
i:=head[q[h]];
while i<>0 do
begin
if d[e[i]]>d[q[h]]+w[i] then
begin
d[e[i]]:=d[q[h]]+w[i];
if not v[e[i]]then
begin
t:=(t+1)mod lim;
q[t]:=e[i];
v[e[i]]:=true;
end;
end;
i:=next[i];
end;
v[q[h]]:=false;
end;
if d[n]<maxlongint shr 1 then writeln(d[n])else writeln(-1);
dec(cnt);
end;
close(input);
close(output);
end.