ZOJ 2782


#include<iostream>
#include<string>
using namespace std;

 


struct Item
{
    char st[10];
    bool flag;
}from[25],to[25];

 

void move(int sta_pos,int req_pos)
{
    strcpy(to[req_pos].st,from[sta_pos].st);
    from[sta_pos].flag=1;
    to[req_pos].flag=1;
}

 

int main()
{
    int casenum=0;
    cin>>casenum;
    while(casenum--)
    {
        int itemnum,opernum;
        cin>>itemnum>>opernum;

        int i;
        //初始化
        for(i=1;i<=itemnum;i++)
        {
            from[i].flag=0;
            to[i].flag=0;
        }

    
        for(i=1;i<=itemnum;i++)
            cin>>from[i].st;

        int a,b;
        for(i=0;i<opernum;i++)
        {
            cin>>a>>b;
            move(a,b);
        }

        int j=1,k=1;
        while(j<=itemnum && k<=itemnum)
        {
            while(from[j].flag==1)
                j++;
            while(to[k].flag==1)
                k++;
            to[k++]=from[j++];
        }


        for(i=1;i<=itemnum;i++)
        {
            cout<<to[i].st;
            if(i<itemnum)
                cout<<" ";
        }
        cout<<endl;

    }

    return 0;
}

 

你可能感兴趣的:(ZOJ)