比赛 20120706 评测结果 AWWWWTTTTW
题目名称 排队 最终得分 10
用户昵称 czp 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2012-07-06 11:45:27
显示代码纯文本
var
 a:array[0..1000,0..1000] of longint;
 h:array[0..1000] of longint;
 o:array[0..1000] of boolean;
 i,j,m,n,k,ans,u,last,ct:longint;
procedure dfs(v,t:longint);
 var i,j,l:longint;
 begin
  inc(ct);
  if ct>1000000 then exit;
  if ans>last then exit;
  if v=n then begin if ans<last then last:=ans; exit; end;
  l:=random(n)+1;
  for j:=l to l+n-1  do
   begin
   i:=j mod n;if i=0 then i:=n;
   if (not o[i]) and(h[t]-h[i]<=k) then
    begin
     o[i]:=true;
     ans:=ans+a[t,i];
     dfs(v+1,i);
     ans:=ans-a[t,i];
     o[i]:=false;
    end;
   end;
 end;
begin
 assign(input,'queuea.in');reset(input);
 assign(output,'queuea.out');rewrite(output);
 readln(n,k);
 randomize;
 u:=0; h[0]:=maxlongint;
 for i:=1 to n do begin read(h[i]);if h[i]<h[u] then u:=i; end;
 for i:=1 to n do
  begin
   for j:=1 to n do
    read(a[i,j]);
   readln;
  end;
 last:=maxlongint;
 o[u]:=true;
 dfs(1,u);
 writeln(last);
 close(input);close(output);
end.