#define LOCAL0
#include <stdlib.h>
#include <stdio.h>
#include "vector"
#include "iostream"
#include "sstream"
#include <string.h>
#include <cmath>
#include "algorithm"
#define inf 0x3f3f3f3f
using namespace std;
int main(int argc, char const *argv[])
{
#ifdef LOCAL
freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
#endif
const int maxn=30;
int nn[2][maxn],sl,i,j,x,y;
char sa[30],sb[30];
scanf("%d",&sl);
for(i=0;i<sl;++i)
nn[0][i]=nn[1][i]=-1;
while(scanf("%s",sa)){
if(strcmp(sa,"quit")==0) break;
scanf("%d %s %d",&x,sb,&y);
i=x;
while(nn[1][i]>=0){
if(nn[1][i]==y) break;
i=nn[1][i];
}
if(nn[1][i]==y) continue;
i=y;
while(nn[1][i]>=0){
if(nn[1][i]==x) break;
i=nn[1][i];
}
if(nn[1][i]==x) continue;
strcat(sa,sb);
if(strcmp(sa,"moveonto")==0){
i=x;
while(nn[1][i]>=0){
j=nn[1][i];
nn[0][j]=-1;
nn[1][i]=-1;
i=j;
}
i=y;
while(nn[1][i]>=0){
j=nn[1][i];
nn[0][j]=-1;
nn[1][i]=-1;
i=j;
}
if(nn[0][x]>=0)
nn[1][nn[0][x]]=-1;
nn[0][x]=y;
nn[1][y]=x;
}
else if(strcmp(sa,"moveover")==0){
i=x;
while(nn[1][i]>=0){
j=nn[1][i];
nn[0][j]=-1;
nn[1][i]=-1;
i=j;
}
i=y;
while(nn[1][i]>=0)
i=nn[1][i];
if(nn[0][x]>=0)
nn[1][nn[0][x]]=-1;
nn[1][i]=x;
nn[0][x]=i;
}
else if(strcmp(sa,"pileonto")==0){
i=y;
while(nn[1][i]>=0){
j=nn[1][i];
nn[0][j]=-1;
nn[1][i]=-1;
i=j;
}
if(nn[0][x]>=0)
nn[1][nn[0][x]]=-1;
nn[1][y]=x;
nn[0][x]=y;
}
else{
i=y;
while(nn[1][i]>=0)
i=nn[1][i];
if(nn[0][x]>=0)
nn[1][nn[0][x]]=-1;
nn[1][i]=x;
nn[0][x]=i;
}
}
for(i=0;i<sl;++i){
printf("%d:", i);
if(nn[0][i]==-1){
j=i;
do{
printf(" %d", j);
j=nn[1][j];
}while(j>=0);
}
printf("\n");
}
return 0;
}
UVa 101
最新推荐文章于 2022-04-17 12:29:49 发布