记录编号 49102 评测结果 AAAAA
题目名称 最难的任务 最终得分 100
用户昵称 GravatarCAX_CPG 是否通过 通过
代码语言 Pascal 运行时间 0.185 s
提交时间 2012-11-07 12:51:08 内存使用 8.16 MiB
显示代码纯文本
uses math;

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;
     if a[x,y]=0 then a[x,y]:=z else a[x,y]:=min(a[x,y],z);
     inc(b[y,0]);b[y,b[y,0]]:=x;
     if a[y,x]=0 then a[y,x]:=z else a[y,x]:=min(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.