PAST E - 順列

f:id:peroon:20201106103407p:plain

#include <atcoder/dsu>
using namespace atcoder; // 忘れがち

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    // input
    ll N; 
    cin>>N;

    VI A(N);
    rep(i, N){
      cin >> A[i];
      A[i]--;
    }

    dsu uf(N);

    rep(i,N){
      uf.merge(i,A[i]);
    }

    VI Ans;
    rep(i,N){
      ll ans = uf.size(i);
      Ans.push_back(ans);
    }
    print_vector(Ans);
    
    return 0;
}