抓人

 

 

 

 暴力枚举即可,用vis[i]表示第i个人被没被抓,或者就是在图中求环长度。

#include<bits/stdc++.h>
using namespace std;
const int N=2010;
int n,p[N],vis[N];
int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>p[i];
    for(int i=1;i<=n;i++)
    {
        int t=0;
        memset(vis,0,sizeof vis);
        for(int j=i;vis[j]==0;j=p[j],t++)
        {
            if(j==i) vis[i]=1;
            vis[j]=1;
        }
        printf("%d ",t);
    }
    return 0;
}

 

posted @ 2023-03-26 21:54  王浩泽  阅读(35)  评论(0编辑  收藏  举报