记录编号 7077 评测结果 AAAAAAAAAA
题目名称 Perform巡回演出 最终得分 100
用户昵称 Gravatarlc 是否通过 通过
代码语言 Pascal 运行时间 0.039 s
提交时间 2008-11-06 11:49:09 内存使用 0.20 MiB
显示代码纯文本
program day5_3;   
  
 var  
    n,k:integer;   
    f:array[0..1000,1..10] of int64;   
    g:array[1..10,1..10,0..30] of longint;   
  
 procedure init;   
  var  
      i,j,P:integer;   
 begin  
  for i:=1 to n do  
   for j:=1 to n do  
   if i<>j   
   then begin  
        read(g[i,j,0]);   
        for P:=1 to g[i,j,0] do  
        read(g[i,j,P]);   
        end;   
 end;   
  
  
 procedure main;   
  var  
     i,j,P:integer;   
     tm,val:longint;   
  
 begin  
  f[0,1]:=0;   
  for i:=1 to k-1 do  
   for j:=1 to n do  
    for P:=1 to n do  
    if P<>j   
    then if f[i-1,P]<>-1  
         then begin  
              val:=g[P,j,(i-1) mod g[P,j,0]+1];   
              if val<>0  
              then begin  
                   tm:=f[i-1,P]+val;   
                   if (tm<f[i,j]) or (f[i,j]=-1)   
                   then f[i,j]:=tm;   
                   end;   
              end;   
  for j:=1 to n do  
  if j<>n   
  then  
      if f[k-1,j]<>-1  
      then  
          begin  
          val:=g[j,n,(k-1) mod g[j,n,0]+1];
       if val<>0
          then       
          if (f[k,n]=-1) or (f[k-1,j]+val<f[k,n])   
          then f[k,n]:=f[k-1,j]+val;   
          end;   
 if f[k,n]=-1 then writeln(0)   
              else writeln(f[k,n]);   
 end;   
  
 begin  
  assign(input,'candy.in');   
  assign(output,'candy.out');   
  reset(input); rewrite(output);   
  read(n,k);   
  while (n<>0) or (k<>0) do begin  
  fillchar(g,sizeof(g),0);   
  fillchar(f,sizeof(f),$FF);   
     init;   
     main;   
  read(n,k);   
     end;   
 close(input); close(output);   
 end.