比赛 20101117 评测结果 WWWWWWWWWW
题目名称 教官 最终得分 0
用户昵称 DeiTy 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-17 09:55:35
显示代码纯文本
program officer;
var
    n,i,j,m,l,r:longint;
    a,b,c:array[1..10000] of longint;
begin
  assign(input,'officer.in');
  assign(output,'officer.out');
  reset(input);
  rewrite(output);
  readln(n);
  l:=1;
  for i:=1 to n do readln(a[i]);
  for i:=1 to n do b[i]:=a[i];
  for i:=1 to n do
    begin
      if b[i]<>b[b[i]] then
        begin
          c[l]:=b[b[i]];
          l:=l+1;
          b[b[i]]:=b[i];
          m:=m+1;
        end;
    end;

  r:=1;
  i:=1;
  while (i<l+r) and (c[i]<>0) do
    begin
      if b[b[c[i]]]=b[c[i]]
        then
          begin
            b[c[i]]:=c[i];
            i:=i+1;
            m:=m+1;
          end
        else
          begin
            c[l+r]:=b[c[i]];
            b[c[i]]:=c[i];
            r:=r+1;
            i:=i+1;
            m:=m+1;
          end;
    end;
  writeln(m-1);
  close(input);
  close(output);
end.