#include <cstdio>
#include <vector>
using namespace std;
int main()
{
vector<int> v(1e6+1,0);
int q, op, x, y;
scanf("%d", &q);
while(q--)
{
scanf("%d %d", &op, &x);
if(op == 1)
{
scanf("%d", &y);
v[y] = v[x];
v[x] = y;
}
else if(op == 2)
{
printf("%d\n", v[x]);
}
else if(op == 3)
{
v[x] = v[v[x]];
v[v[x]] = 0;
}
}
return 0;
}
应该可以确定这个题解的思路没有问题,但是实际提交的时候只能通过前三个测试点。
反复测试之后发现只需要将数组的空间再开大一些,比如 1e6+10 或者对删除操作进行一个溢出的判断就能通过全部测试点