比赛 20130729 评测结果 AAAAAAAATA
题目名称 奶牛的糖果 最终得分 90
用户昵称 农场主 运行时间 1.365 s
代码语言 Pascal 内存使用 1.31 MiB
提交时间 2014-07-17 09:36:55
显示代码纯文本
    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.