比赛 20130729 评测结果 AAAAAAAATA
题目名称 奶牛的糖果 最终得分 90
用户昵称 FoolMike 运行时间 1.362 s
代码语言 Pascal 内存使用 1.31 MiB
提交时间 2014-07-17 09:33:58
显示代码纯文本
var
c,d,n:longint;
a,b,ans:array[1..100000]of longint;

procedure treat(w:longint);
var
i,j:longint;
begin
i:=w;
while b[a[i]]<>c do
  begin
  b[a[i]]:=c;
  i:=a[i];
  inc(ans[c]);
  end;
i:=a[i];
j:=w;
while j<>i do
  begin
  ans[a[j]]:=ans[j]-1;
  j:=a[j];
  end;
j:=a[j];
while j<>i do
  begin
  ans[j]:=ans[i];
  j:=a[j];
  end;
end;

begin
assign(input,'treat.in');
assign(output,'treat.out');
reset(input);
rewrite(output);

read(n);
for c:=1 to n do
read(a[c]);

for c:=1 to n do
if ans[c]=0 then
  begin
  ans[c]:=1;
  b[c]:=c;
  treat(c);
  end;

for c:=1 to n do
writeln(ans[c]);
close(input);close(output);
end.