记录编号 |
128747 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Open09] 捉迷藏 |
最终得分 |
100 |
用户昵称 |
甘罗 |
是否通过 |
通过 |
代码语言 |
Pascal |
运行时间 |
0.053 s |
提交时间 |
2014-10-18 12:01:12 |
内存使用 |
1.17 MiB |
显示代码纯文本
program cojs774;
type
tnode=record
x,next:longint;
end;
anode=record
x,dis,tot:longint;
end;
var
ans:anode;
q:array[0..20010]of longint;
v:array[1..20010]of boolean;
d,h:array[1..20010]of longint;
table:array[1..100010]of tnode;
len,i,n,m:longint;
procedure add(i,j:longint);
begin
inc(len);
table[len].x:=j; table[len].next:=h[i];
h[i]:=len;
end;
procedure init;
var
u,v,i:longint;
begin
readln(n,m);
for i:=1 to m do
begin
read(u,v);
add(u,v);
add(v,u);
end;
end;
procedure spfa;
var
i,p,front,tail:longint;
begin
for i:=2 to n do d[i]:=maxlongint shr 1;
q[1]:=1; v[1]:=true;
front:=0; tail:=1;
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]]+1 then
begin
d[table[p].x]:=d[q[front]]+1;
if not v[table[p].x] then
begin
inc(tail);
tail:=tail mod n;
q[tail]:=table[p].x;
v[table[p].x]:=true;
end;
end;
p:=table[p].next;
end;
v[q[front]]:=false;
end;
end;
begin
assign(input,'hideseek.in');reset(input);
assign(output,'hideseek.out');rewrite(output);
init;
spfa;
for i:=1 to n do
if d[i]>ans.dis then
begin
ans.dis:=d[i];
ans.x:=i;
end;
for i:=1 to n do
if d[i]=ans.dis then inc(ans.tot);
with ans do
writeln(x,' ',dis,' ',tot);
close(input);close(output);
end.