#include<iostream>
using namespace std;
constexpr int MAXSIZE(100000);
struct Deque {
int left, right;
bool isDeleted;
}deque[MAXSIZE + 1];
int main() {
deque[0].right = 1;
deque[1].left = 0;
int N;
cin >> N;
for (int i = 2; i <= N; i++) {
int k, p;
cin >> k >> p;
if (0 == p) {
deque[deque[k].left].right = i;
deque[i].left = deque[k].left;
deque[i].right = k;
deque[k].left = i;
} else {
deque[deque[k].right].left = i;
deque[i].right = deque[k].right;
deque[i].left = k;
deque[k].right = i;
}
}
int M;
cin >> M;
for (int i = 0; i < M; i++) {
int x;
cin >> x;
if (!deque[x].isDeleted) {
deque[deque[x].left].right = deque[x].right;
deque[deque[x].right].left = deque[x].left;
deque[x].isDeleted = true;
}
}
int i;
for (i = deque[0].right; deque[i].right != 0; i = deque[i].right)
cout << i << ' ';
cout << i << endl;
return 0;
}
洛谷P1160 队列安排(双向队列)
最新推荐文章于 2022-10-20 16:22:39 发布