记录编号 |
106197 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 3.2] 香甜的黄油 |
最终得分 |
100 |
用户昵称 |
筽邝 |
是否通过 |
通过 |
代码语言 |
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.