比赛 “Asm.Def战记之拉格朗日点”杯 评测结果 WWWWEETEEE
题目名称 Asm.Def的打击序列 最终得分 0
用户昵称 typhon 运行时间 4.007 s
代码语言 Pascal 内存使用 0.15 MiB
提交时间 2015-11-04 11:34:00
显示代码纯文本
var n,m,c,i,j,min,a,b,v,k:longint;
map:array[1..5,0..5] of longint;
cos:array[1..5,0..5] of longint;
begin
assign(input,'asm_lis.in');
reset(input);
assign(output,'asm_lis.out');
rewrite(output);
 readln(n,m,c);
 for i:=1 to m do
  begin
   readln(a,b,v);
   inc(map[a,0]);
   map[a,map[a,0]]:=b;
   cos[a,map[a,0]]:=v;
  end;
 if n=2 then
  begin
   if map[1,1]<>0 then min:=cos[1,1]+c;
   if (map[2,1]<>0) and (cos[2,1]<cos[1,1]) then min:=cos[2,1]+c;
   writeln(min);
   halt;
  end;
 if n=3 then
  begin
   for j:=1 to map[1,0] do
    for k:=1 to map[j,0] do
     if ((map[1,j]=2)and(map[j,k]=3)) or ((map[1,j]=3)and(map[j,k]=2)) and(cos[1,j]+cos[j,k]+c<min) then
     min:=cos[1,j]+cos[j,k]+c;
   for j:=1 to map[2,0] do
    for k:=1 to map[j,0] do
     if ((map[1,j]=1)and(map[j,k]=3)) or ((map[1,j]=3)and(map[j,k]=1)) and(cos[1,j]+cos[j,k]+c<min) then
     min:=cos[1,j]+cos[j,k]+c;
   for j:=1 to map[3,0] do
    for k:=1 to map[j,0] do
     if ((map[1,j]=1)and(map[j,k]=2)) or ((map[1,j]=2)and(map[j,k]=1)) and(cos[1,j]+cos[j,k]+c<min)  then
     min:=cos[1,j]+cos[j,k]+c;
  end;
 writeln(min);
 close(input);
 close(output);
end.