题解:
直接暴力循环节
然后再做几次
代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> ; int n,s,p[N],a[N],B[N]; void GetNext(int n) { ;i<=n;i++)B[i]=a[a[i]]; ;i<=n;i++)a[i]=B[i]; } int IsSame(int n) { ;i<=n;i++) ; ; } int main() { while (~scanf("%d%d",&n,&s)) { ;i<=n;i++)scanf("%d",&p[i]),a[i]=p[i]; int res; ;;res++) { GetNext(n); if (IsSame(n))break; } int m=res-s%res; while (m--)GetNext(n); ;i<=n;i++)printf("%d\n",B[i]); } ; }