记录编号 |
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.