題意描述

核心:
STL-list的使用,並使用正反lsit來維護雙向列表
代碼
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
list <int> x[N], y[N];
int n,m;
int main()
{
while(~scanf("%d %d",&n,&m)) {
for (int i=1;i<=n;i++) {
x[i].clear(); x[i].push_back(i);
y[i].clear(); y[i].push_back(i);
}
while (m--) {
int a,b; scanf("%d %d",&a,&b);
x[a].splice(x[a].end(), x[b]);
y[b].splice(y[b].end(), y[a]);
swap(x[a],y[b]);
swap(y[a],y[b]);
x[b].clear();
y[b].clear();
}
printf("%d",x[1].size());
for (int it: x[1])
printf(" %d",it);
printf("\n");
}
return 0;
}