蒟蒻玄关求调!
查看原帖
蒟蒻玄关求调!
868063
_Coffice_楼主2023/8/29 16:55
#include <iostream>
#include <bitset>
using namespace std;
int nxt[100005], pre[100005];
bitset<100005> flag;
int head = 1;
int main()
{
    ios::sync_with_stdio(false); 
    cin.tie(0), cout.tie(0);
	int n;
	cin >> n;
	flag[1] = 1;
	for (int i=1;i<=n;i++)
		nxt[i] = pre[i] = i;
	for (int i=2;i<=n;i++)
	{
		int k, p;
		cin >> k >> p;
		if (k == head && p == 0)
		{
			head = i;
		}
		if (p == 0)
		{
			nxt[pre[k]] = i;
			pre[i] = nxt[k];
			nxt[i] = k;
			pre[k] = i;
		}
		else
		{
			pre[nxt[k]] = i;
			nxt[i] = nxt[k];
			pre[i] = k;
			nxt[k] = i;
		}
		flag[i] = 1;
	}
	int m;
	cin >> m;
	for (int i=1;i<=m;i++)
	{
		int x;
		cin >> x;
		if (!flag[x])
			continue;
		else
		{
			if (x == head)
			{
				x = nxt[x];
			}
			nxt[pre[x]] = nxt[x];
			pre[nxt[x]] = pre[x];
			flag[x] = 0;
		}
	}
	int i = nxt[head];
	cout << head << " ";
	while (i != head && nxt[i] != i)
	{
		cout << i << " ";
		i = nxt[i];
	}
	return 0;
} 

记录

2023/8/29 16:55
加载中...