记录编号 127282 评测结果 AAAAAAAAAA
题目名称 [USACO Open09] 捉迷藏 最终得分 100
用户昵称 Gravatar筽邝 是否通过 通过
代码语言 Pascal 运行时间 0.055 s
提交时间 2014-10-15 10:26:28 内存使用 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.