记录编号 106197 评测结果 AAAAAAAAAA
题目名称 [USACO 3.2] 香甜的黄油 最终得分 100
用户昵称 Gravatar筽邝 是否通过 通过
代码语言 Pascal 运行时间 0.207 s
提交时间 2014-06-13 15:49:11 内存使用 0.21 MiB
显示代码纯文本
program cojs309;
const
  maxm=1500;
  maxn=800;
type
  tnode=record
    x,w,next:longint;
  end;
var
  table:array[1..maxm*2]of tnode;
  d,h:array[1..maxn]of longint;
  a:array[1..500]of longint;
  ans,t,len,i,j,x,k,n,m,cow:longint;

procedure add(i,j,x:longint);
begin
  inc(len);
  table[len].x:=j; table[len].w:=x;
  table[len].next:=h[i];
  h[i]:=len;
end;

procedure spfa(k:longint);
var
  i,p,front,tail:longint;
  q:array[0..maxn]of longint;
  v:array[1..maxn]of boolean;
begin
  fillchar(v,sizeof(v),true);
  for i:=1 to n do d[i]:=maxlongint;
  front:=0; tail:=1;
  q[1]:=k; v[k]:=false; d[k]:=0;
  while front<>tail do
  begin
    inc(front);
    front:=front mod n;
	p:=h[q[front]];
	while p<>0 do
	begin
	  if d[table[p].x]>d[q[front]]+table[p].w then
	  begin
	    d[table[p].x]:=d[q[front]]+table[p].w;
		if v[table[p].x] then
		begin
		  inc(tail);
          tail:=tail mod n;
		  q[tail]:=table[p].x;
		  v[table[p].x]:=false;
		end;
	  end;
	  p:=table[p].next;
	end;
	v[q[front]]:=true;
  end;
end;

begin
assign(input,'butter.in');reset(input);
assign(output,'butter.out');rewrite(output);

  readln(cow,n,m);
  for i:=1 to cow do
  readln(a[i]);
  for k:=1 to m do
  begin
    readln(i,j,x);
	add(i,j,x);
	add(j,i,x);
  end;

  ans:=maxlongint;
  for i:=1 to n do
  begin
    spfa(i);
	t:=0;
	for j:=1 to cow do
	  inc(t,d[a[j]]);
	if t<ans then ans:=t;
  end;

  writeln(ans);

close(input);close(output);
end.