那位大佬能帮帮我吗(40分求助)
查看原帖
那位大佬能帮帮我吗(40分求助)
634807
liguorui2022楼主2023/3/25 19:17
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct ooo
{
	int l,r,id;
}a[1000000];
int ji[1000000];
int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	int n,i,start;
	a[1].id=1;
	cin>>n;
	for(i=2;i<=n;i++)
	{
		int x,y;
		cin>>x>>y;
		if(y==0)
		{
			if(a[x].id==1)
			{
				a[x].id=0;
				a[i].id=1;
				start=i;
			}
			a[i].r=x;
			if(a[a[x].l].r!=0)	
			{
				a[i].l=a[x].l; 
				a[a[x].l].r=i;//原来a[x]的左边就是新插入的 i 
			}
			a[x].l=i; 
		}
		else
		{
			a[i].l=x;
			if(a[a[x].r].l!=0)	 
			{
				a[i].r=a[x].r; 
				a[a[x].r].l=i;
			}
			a[x].r=i; 
		}
	}
//	for(i=1;i<=n;i++)//2 3 4 1
//	{
//		cout<<i<<' '<<a[i].l<<' '<<a[i].r<<'\n';
//	}
//	cout<<"suhu"<<start<<'\n';
	int m,z;
	cin>>m;
	while(m--)
	{
		cin>>z;
		if(a[z].l!=0&&a[z].r!=0)
		{
		//	cout<<"soa"<<start<<'\n';
			if(z==start)
			{
				start=a[z].r;

			}
			a[a[z].l].r=a[z].r;
			a[a[z].r].l=a[z].l;
			//cout<<"whd:"<<a[a[z].l].r<<' '<<a[a[z].r].l<<'\n';
			a[z].l=0,a[z].r=0;		
		}
	}
//	for(i=1;i<=n;i++)//2 3 4 1
//	{
//		cout<<i<<' '<<a[i].l<<' '<<a[i].r<<'\n';
//	}
	for(i=1;i<=n;i++)
	{
		if(a[i].l==0&&a[i].r!=0)
		{
			start=i;
		}
	}
	cout<<start<<' ';
	int c=a[start].r;
	while(c!=0)
	{
		cout<<c<<' ';
		c=a[c].r;
	}
	return 0;
}
2023/3/25 19:17
加载中...