40分求助,WA中间三个点
查看原帖
40分求助,WA中间三个点
938924
mashi_sanjiaosha楼主2023/8/21 17:11
#include <bits/stdc++.h>

using namespace std;
const int N = 100010;

int e[N], l[N], r[N], idx;

void add(int k, int x)
{
	e[idx] = x;
	l[idx] = k, r[idx] = r[k];
	l[r[k]] = idx, r[k] = idx++;
}

void remove(int k)
{
	r[l[k]] = r[k];
	l[r[k]] = l[k];
}


int main()
{
	int n;
	cin >> n;
	r[0] = 1;
	l[1] = 0;
	idx = 2;
	add(0, 1);
	for (int i = 2; i <= n; i++)
	{
		int k, p;
		cin >> k >> p;
		if (p == 1)add(k + 1, i);
		else add(l[k + 1], i);
	}

	int m;
	cin >> m;
	while (m--)
	{
		int k;
		cin >> k;
		remove(k + 1);
	}

	for (int i = r[0]; i != 1; i = r[i])cout << e[i] << ' ';
	cout << endl;
	return 0;
}
2023/8/21 17:11
加载中...