抓人
暴力枚举即可,用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; }