# include <cstdio>
# include <vector>
using namespace std;
struct student {
int num;
int pre, next;
};
int main() {
int N;
scanf("%d", &N);
vector<student> queue(N + 1);
queue[0].num = 0;
queue[0].next = 1;
queue[1].num = 1;
queue[1].pre = 0;
for (int number = 2; number <= N; ++number) {
int k, p;
scanf("%d %d", &k, &p);
student present = queue[0];
while (present.num != k) {
present = queue[present.next];
}
queue[number].num = number;
if (p == 0) {
queue[present.pre].next = number;
queue[number].pre = queue[present.pre].num;
queue[number].next = present.num;
queue[present.num].pre = number;
} else {
queue[number].next = present.next;
queue[present.next].pre = number;
queue[present.num].next = number;
queue[number].pre = present.num;
}
}
int M;
scanf("%d", &M);
for (int i = 0; i < M; ++i) {
int x;
scanf("%d", &x);
student present = queue[0];
for (int j = 0; j < N ; ++j) {
present = queue[present.next];
if (present.num == x) {
queue[present.next].pre = present.pre;
queue[present.pre].next = present.next;
--N;
}
}
}
student outPres = queue[0];
for (int i = 0; i < N; ++i) {
outPres = queue[outPres.next];
printf("%d ", outPres.num);
}
return 0;
}
struct实现每个学生的结构体,双向链表存储pre和next,前两个没问题但后三个TLE(已开O2),有没有哪里可以优化