#include <stdio.h>
#include <iostream>
using namespace std;
const int maxn = 100010;
struct dListNode
{
int data;
int pre;
int next;
int visit;
dListNode()
{
data = -1;
pre = -1;
next = -1;
visit = 0;
}
}a[maxn];
int main()
{
int n;
cin >> n;
a[0].next = 1;
a[1].pre = 0;
for (int i = 2; i <= n; i++)
{
//开始创建新的关系
int data,flag;
cin >> data >> flag;
//插在左边
if (flag == 0)
{
a[i].pre = a[data].pre;
a[a[data].pre].next = i;
a[data].pre = i;
a[i].next = data;
}
//插在右边
else if (flag == 1)
{
a[i].next = a[data].next;
a[a[data].next].pre = i;
a[data].next = i;
a[i].pre = data;
}
}
int m;
cin >> m;
for (int i = 0; i < m; i++)
{
int k;
cin >> k;
a[k].visit = 1;
}
//开始输出
int start = a[0].next;
while (start != -1)
{
if (a[start].visit != 1)
{
cout << start << " ";
}
start = a[start].next;
}
}
P1160队列安排
最新推荐文章于 2025-03-31 23:10:49 发布