蒟蒻求助,自己 电脑运行下载下来的数据输出正常,测试机全RE
查看原帖
蒟蒻求助,自己 电脑运行下载下来的数据输出正常,测试机全RE
359814
AixWang楼主2023/8/13 16:29
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
	register char ch;
	register int f,x;
	ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<3)+(x<<1)+(ch^48);
		ch=getchar();
	}
	if(f<0)
	{
		return -x;
	}
	return x;
}
struct node
{
	int k,p;
};
node cz[100010];
int n,m,l[100010],r[100010],u[100010],head=1,tail=1;
signed main()
{
	n=read();
	for(int i=2;i<=n;i++)
	{
		cz[i].k=read();
		cz[i].p=read();
		int ki=cz[i].k,pi=cz[i].p;
		if(!pi)
		{
			r[l[ki]]=i;
			l[i]=l[ki];
			r[i]=ki;
			l[ki]=i;
			if(l[i]==0)head=i;
		}
		else
		{
			l[r[ki]]=i;
			r[i]=r[ki];
			l[i]=ki;
			r[ki]=i;
			if(r[i]==0)tail=i;
		}
	}
	m=read();
	for(int i=1;i<=m;i++)
	{
		int x=read();
		if(u[x])continue;
		if(x==head)
		{
			head=r[x];
			l[head]=0;
			continue;
		}
		if(x==tail)
		{
			tail=l[x];
			r[tail]=0;
			continue;
		}
		r[l[x]]=r[x];
		l[r[x]]=l[x];
		u[x]=1;
	}
	int ans=head;
	while(true)
	{
		if(ans==0)break;
		printf("%d ",ans);
		ans=r[ans];
	}
	return 0;
}
2023/8/13 16:29
加载中...