思路:反向思考,建立x到px的映射表,如果输入的指令是第一类,直接按照映射表插入px,如果输入的指令是第二类,修改映射表,将x的映射px改为py。最后逆序输出。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e7 + 7;
int x[N], y[N], op[N];
vector<int> p;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n;
cin >> n;
p.resize(N);
iota(p.begin(), p.end(), 0);
for (int i = 1;i <= n;i++)
{
cin >> op[i]>>x[i];
if (op[i] == 2)cin >> y[i];
}
vector<int> ans;
for (int i = n;i >= 1;--i) {
if (op[i] == 1)ans.push_back(p[x[i]]);
else p[x[i]] = p[y[i]];
}
reverse(ans.begin(), ans.end());
for (auto x : ans)cout << x << ' ';
return 0;
}