比赛 20121107 评测结果 AAWWW
题目名称 最难的任务 最终得分 40
用户昵称 CAX_CPG 运行时间 0.182 s
代码语言 Pascal 内存使用 8.03 MiB
提交时间 2012-11-07 10:52:05
显示代码纯文本
var f:array[0..200]of longint;
    v:array[1..200]of boolean;
    a:array[1..200,1..200]of longint;
    b:array[1..200,0..10000]of longint;
    p:array[1..20000]of longint;
    i,k,x,now,y,z,n,m,t,head,tail:longint;

begin
 assign(input,'hardest.in');reset(input);
 assign(output,'hardest.out');rewrite(output);
 readln(t);
 for k:=1 to t do
  begin
   readln(n,m);
   fillchar(b,sizeof(b),0);
   fillchar(a,sizeof(a),0);
   for i:=1 to m do
    begin
     readln(x,y,z);
     inc(b[x,0]);b[x,b[x,0]]:=y;a[x,y]:=z;
     inc(b[y,0]);b[y,b[y,0]]:=x;a[y,x]:=z;
    end;
   fillchar(v,sizeof(v),false);
   fillchar(f,sizeof(f),$7f);
   p[1]:=1;f[1]:=0;head:=0;tail:=1;
   while head<>tail do
    begin
     inc(head);
     now:=p[head];v[now]:=false;
     for i:=1 to b[now,0]do
      begin
       x:=b[now,i];
       if f[x]>f[now]+a[x,now] then
        begin
         f[x]:=f[now]+a[x,now];
         if not(v[x])then
          begin inc(tail);p[tail]:=x;v[x]:=true;end;
        end;
      end;
    end;
   if f[n]<>f[0]then writeln(f[n])else writeln('-1');
  end;
 close(output);
end.