poj1721 CARDS

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int p[1020][1020];
int k;
int n,s;
bool charge()
{
    int i;
    for(i=1;i<=n;i++)
    {
        if(p[0][i]!=p[k-1][i])
        {
            return true;
        }
    }
    return false;
}
int main()
{
    scanf("%d %d",&n,&s);
    int i,j;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&p[0][i]);
    }
    k=1;
    while(charge()||k==1)
    {
        for(i=1;i<=n;i++)
        {
            p[k][i]=p[k-1][p[k-1][i]];
        }
        k++;
    }
    k=k-2;//p[0],,,p[k]
    int qi=0;
    while(s--)
    {
        qi--;
        if(qi<0)
        {
            qi=k;
        }
    }
    for(i=1;i<=n;i++)
    {
        printf("%d\n",p[qi][i]);
    }
    system("PAUSE");
    return 0;
}

posted @ 2012-07-12 08:48  willzhang  阅读(120)  评论(0编辑  收藏  举报