1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include<string> #include<vector> #include<iostream> using namespace std;
const int maxn=25+5; vector<int>wood[maxn]; int n;
void (int a,int &h,int &w){ for(w=0;w<n;w++) for(h=0;h<wood[w].size();h++) if(wood[w][h]==a)return; }
void reset(int a,int w,int h){ for(int i=h+1;i<wood[w].size();i++) wood[wood[w][i]].push_back(wood[w][i]); wood[w].resize(h+1); }
void a_moveto_b(int a,int b,int ha,int wa,int wb){ for(int i=ha;i<wood[wa].size();i++) wood[wb].push_back(wood[wa][i]); wood[wa].resize(ha); }
int main(){ int a,b; string str1,str2; cin>>n; for(int i=0;i<n;i++)wood[i].push_back(i); while(cin>>str1>>a>>str2>>b&&str1[0]!='q'){ int wa,wb,ha,hb; find(a,ha,wa); find(b,hb,wb); if(wa==wb)continue; if(str1[0]=='m'){ reset(a,wa,ha); if(str2[1]=='n')reset(b,wb,hb); a_moveto_b(a,b,ha,wa,wb); } else{ if(str2[1]=='n')reset(b,wb,hb); a_moveto_b(a,b,ha,wa,wb); } } for(int i=0;i<n;i++){ printf("%d:",i); for(int j=0;j<wood[i].size();j++)printf(" %d",wood[i][j]); printf("n"); } return 0; }
|
近期评论