#include <iostream>
using namespace std;
const int N = 1e6+7;
struct node {
int pre,nxt;
int w;
node(int _pre=0, int _nxt=0, int _w=0) {
pre = _pre, nxt = _nxt, w = _w;
}
};
node t[N];
int inde[N];
int q, tail;
void insert(int x, int y) {
int now = inde[x];
t[++tail] = node(now, t[now].nxt, y);
t[now].nxt = tail;
t[t[now].nxt].pre = tail;
inde[y] = tail;
}
void del(int x) {
int now = inde[t[t[inde[x]].nxt].w];
t[t[now].pre].nxt = t[now].nxt;
t[t[now].nxt].pre = t[now].pre;
inde[t[now].w] = 0;
}
int main() {
cin>>q;
t[0] = node();
insert(0,1);
int opt, a, b;
while(q--) {
cin>>opt;
if(opt == 1) {
cin>>a>>b;
insert(a,b);
} else if(opt == 2) {
cin>>a;
cout << t[t[inde[a]].nxt].w << endl;
} else {
cin>>a;
del(a);
}
}
return 0;
}
只能过前两个点,真的看不出来有什么问题了。