#include <bits/stdc++.h>
using namespace std;
const int M=3e5+5;
//盒子的编号不是固定的
//只要将两个人的id换一下,就可以实现swap(box[i],box[j])
//映射关系,便于查找球对应的是哪一个编号
vector<int>box[M];
int fa[M<<1],id[M],di[M];
int main() {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++) {
id[i]=di[i]=fa[i]=i;
box[i].push_back(i);
}
while(q--) {
int op,x,y;
cin>>op>>x;
if(op==1) {
cin>>y;
//大的放到小的里面
if(box[id[x]].size()<box[id[y]].size()) {
swap(id[x],id[y]);
swap(di[id[x]],di[id[y]]);
}
for(auto c:box[id[y]]) {
box[id[x]].push_back(c);
fa[c]=id[x];
}
box[id[y]].clear();//记得清空
}
if(op==2) {
fa[++n]=id[x];
box[id[x]].push_back(n);
}
if(op==3)cout<<di[fa[x]]<<endl;
}
return 0;
}
标签:box,abc,--,int,279,id
From: https://www.cnblogs.com/basicecho/p/16994150.html