#运行一直被中断,有没有大佬帮我运行一下告诉我错在哪了,
#include<iostream>
#include<vector>
#include<list>
#include<cstring>
using namespace std;
void initialize(int count,vector< list<int> >&table){
int i=0;
for(i=0;i<count;i++){
table.push_back( list<int>(1,i) );
}
}
void display(vector< list<int> >&table){
list<int>::iterator q;
int i,j=table.size();
for(i;i<j;i++){
q=table[i].begin();
cout<<i<<":";
for(q;q!=table[i].end();q++)
cout<<*q<<" ";
cout<<endl;
}
}
int lookup(int a,list<int>::iterator &q,vector< list<int> >&table) {
int i=0,j=table.size();
for(i;i<j;i++){
q=table[i].begin();
for(q;q!=table[i].end();q++)
if(*q==a) return i;
}
return -1;
}
int panduan(int a,int b,vector< list<int> >&table){
int i,j;
list<int>::iterator q,p;
i=lookup(a,q,table);
j=lookup(b,p,table);
if(i==j) return 1;
return 0;
}
void reset(int a,vector< list<int> >&table){
list<int>::iterator q;
int flag;
flag=lookup(a,q,table);
list<int>::iterator p=q;
p++;
if(flag==-1||q==table[flag].end()) return ;
while(p!=table[flag].end()){
table[*p].push_back(*p);
p=table[flag].erase(p);
}
}
void move(int a,int b,vector< list<int> >&table){
if(a==b||panduan(a,b,table)) return ;
int flag1,flag2;
list<int>::iterator q,p;
flag1=lookup(a,q,table);
flag2=lookup(b,p,table);
if(flag1==-1||q==table[flag1].end()) return ;
if(flag2==-1||p==table[flag2].end()) return ;
table[flag2].insert(table[flag2].end(),q,table[flag1].end());
table[flag1].erase(p,table[flag1].end());
}
int main(){
vector< list<int> >table;
int count=0;
while(cin>>count)
{
initialize(count,table);
string flag;
while(cin>>flag){
if(flag=="quit") break;
string flag2;
int a=0,b=0;
cin>>a>>flag2>>b;
if(flag=="move"&&flag2=="over"){
reset(a,table);
move(a,b,table);
}
if(flag=="move"&&flag2=="onto"){
reset(a,table);
reset(b,table);
move(a,b,table);
}
if(flag=="pile"&&flag2=="over"){
move(a,b,table);
}
if(flag=="pile"&&flag2=="onto"){
reset(b,table);
move(a,b,table);
}
}
display(table);}
return 0;
}