标签:io ar for sp amp c as poj r
//给出置换了s次后的序列,求原序列
# include <stdio.h>
# include <algorithm>
# include <string.h>
using namespace std;
int main()
{
int n,s,t,s1,i,cot;
int a[1010],b[1010],c[1010];
while(~scanf("%d%d",&n,&s))
{
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
c[i]=a[i];
}
cot=0;
while(1)//求循环节
{
cot++;
for(i=1; i<=n; i++)
b[i]=c[c[i]];
for(i=1; i<=n; i++)
{
if(a[i]!=b[i])
break;
}
if(i>n)
break;
for(i=1; i<=n; i++)
c[i]=b[i];
}
s%=cot;
s=cot-s;
while(s--)
{
for(i=1; i<=n; i++)
b[i]=a[a[i]];
for(i=1; i<=n; i++)
a[i]=b[i];
}
for(i=1; i<=n; i++)
printf("%d\n",b[i]);
}
return 0;
}
标签:io ar for sp amp c as poj r
原文地址:http://blog.csdn.net/lp_opai/article/details/39010875