迷之异常,照着书本打都错了。以后有能力再处理。
/*
ID: Ben biss
PROG: #####
LANG: C++
*/
#include<stdio.h>
#include <iostream>
using namespace std;
#include<cstring>
#include <fstream>
#include<cmath>
#include<string>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#define FOR(i,n) for(i=0;i<n;i++)
#define cmem(a) memset(a,'/0',sizeof(a))
#define imem(a) memset(a,0,sizeof(a))
//#define cin fin
//#define cout fout
const int maxn=30;
int n;
vector<int >pile[maxn];
void clear_above(int p,int h)
{
int i;
for(i=h+1;i<pile[p].size();i++)
{
pile[pile[p][i]].push_back(pile[p][i]);
}
pile[p].resize(h+1);
}
void find_lo(int loca,int &p,int &h)
{
for(p=0;p<n;p++)
{
for(h=0;h<pile[p].size();h++)
if(pile[p][h]==loca)return;
}
}
void put(int pa,int ha,int pb)
{
for(;ha<pile[pa].size();ha++)
{
pile[pb].push_back(pile[pa][ha]);
}
pile[pa].resize(ha);
}
void print()
{
int i,j;
for(i=0;i<n;i++)
{
cout<<i<<":";
for(j=0;j<pile[i].size();j++)
{
cout<<" "<<pile[i][j];
}
cout<<"\n";
}
}
int main()
{
//ofstream fout ("#####.out");
//ifstream fin ("#####.in");
string s1,s2;
int n;
int a,b;
int pa,ha,pb,hb;
cin>>n;
for(int i=0;i<n;i++)pile[i].push_back(i);
while(cin>>s1>>a>>s2>>b)
{
find_lo(a,pa,ha);
find_lo(b,pb,hb);
if(s1=="move")
{
clear_above(pa,ha);
if(s2=="onto")clear_above(pb,hb);
put(pa,ha,pb);
}
else
{
if(s2=="onto")clear_above(pb,hb);
put(pa,ha,pb);
}
}
print();
return 0;
}