Pagini recente » Cod sursa (job #3041879) | Cod sursa (job #1156769) | Cod sursa (job #2034213) | Cod sursa (job #200312) | Cod sursa (job #6887)
Cod sursa(job #6887)
#include <cstdio>
using namespace std;
int v[201][101];
int h[64], w[64];
int i, j;
int n;
void solve(int cmd, int a, int b) {
if (w[a] == w[b]) return;
switch (cmd){
case 11: {
int i, j, k;
k = w[a];
for (i=h[k]; v[k][i]!=a; i--){
h[v[k][i]]++;
v[v[k][i]][h[v[k][i]]] = v[k][i];
w[v[k][i]] = v[k][i];
v[k][i] = 0;
h[k]--;
}
k = w[b];
for (i=h[k]; v[k][i]!=b; i--){
h[v[k][i]]++;
v[v[k][i]][h[v[k][i]]] = v[k][i];
w[v[k][i]] = v[k][i];
v[k][i] = 0;
h[k]--;
}
h[w[a]]--; h[w[b]]++;
v[w[b]][h[w[b]]] = a;
w[a] = w[b];
break;
}
case 12: {
int i, j, k;
k = w[a];
for (i=h[k]; v[k][i]!=a; i--){
h[v[k][i]]++;
v[v[k][i]][h[v[k][i]]] = v[k][i];
w[v[k][i]] = v[k][i];
v[k][i] = 0;
h[k]--;
}
h[w[a]]--; h[w[b]]++;
v[w[b]][h[w[b]]] = a;
w[a] = w[b];
break;
}
case 21: {
int i, j, k;
k = w[b];
for (i=h[k]; v[k][i]!=b; i--){
h[v[k][i]]++;
v[v[k][i]][h[v[k][i]]] = v[k][i];
w[v[k][i]] = v[k][i];
v[k][i] = 0;
h[k]--;
}
int stack[32];
stack[0] = 0;
k = w[a];
for (i=h[k]; v[k][i]!=a; i--){
stack[++stack[0]] = v[k][i];
w[v[k][i]] = w[b];
v[k][i] = 0;
h[k]--;
}
h[k]--;stack[++stack[0]] = a;
k = w[b]; w[a] = w[b];
for (i=stack[0]; i>=1; i--) v[k][++h[k]] = stack[i];
break;
}
case 22: {
int i, j, k;
int stack[32];
stack[0] = 0;
k = w[a];
for (i=h[k]; v[k][i]!=a; i--){
stack[++stack[0]] = v[k][i];
w[v[k][i]] = w[b];
v[k][i] = 0;
h[k]--;
}
h[k]--;stack[++stack[0]] = a;
k = w[b]; w[a] = w[b];
for (i=stack[0]; i>=1; i--) v[k][++h[k]] = stack[i];
break;
}
default: break;
}
}
int main() {
//freopen("date.in", "r", stdin);
scanf("%d\n", &n);
for (i=1; i<=n; i++) {v[i][1] = i; h[i] = 1, w[i] = i;}
while(1) {
char v[128];
scanf("%s", &v);
if (v[0] == 'q') break;
int cmd = 0, a, b;
if (v[0] == 'm') cmd+=10;
else cmd+=20;
scanf("%d %s %d\n", &a, &v, &b);
a++, b++;
if (v[1] == 'n') cmd+=1; else cmd+=2;
solve(cmd, a, b);
}
for (i=1; i<=n; i++) {
printf("%d:", i-1);
for (j=1; j<=h[i]; j++) printf(" %d", v[i][j]-1);
printf("\n");
}
return 0;
}