代码求调最后死循环
查看原帖
代码求调最后死循环
491101
mayue123楼主2022/10/22 08:20
#include<bits/stdc++.h>
using namespace std;
struct qwq
{
	int r,l;
}a[1005];
int sum,n,m,b[1005];
int main()
{
	
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		a[i].l=a[i].r=-1;
	for(int i=2;i<=n;i++)
	{
		int k,p;
		scanf("%d%d",&k,&p);
		if(p==0)
		{
			a[a[k].l].r=i;
			a[i].l=a[k].l;
			a[k].l=i;
			a[i].r=k+1;
			if(k==1)
				sum=i;
		} 
		else
		{
			a[a[k].r].l=i;
			a[i].r=a[k].r;
			a[k].r=i;
			a[i].l=k+1;
			if(k==0)
				sum=i;
		}
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		int k;
		scanf("%d",&k);
		if(b[k]==-1)
			continue;
		else if(sum==k)
		{
			sum=a[sum].r;
			a[sum].l=-1;
			b[k]=-1;
			a[k].l=a[k].r=-1;
		}
		else
		{
			if(a[k].r!=-1)
			{
				a[a[k].r].l=a[k].l;
				a[a[k].l].r=a[k].r;
			}	
			else
				a[a[k].l].r=-1;
			b[k]=-1;
			a[k].l=a[k].r=-1;
		}
	}
	for(int i=1;i<=n;i++)
		cout<<a[i].l<<" "<<i<<" "<<a[i].r<<endl;
	while(1)
	{
		if(sum==-1)
			break;
		cout<<sum<<" ";
		sum=a[sum].r;
	}
	cout<<endl;
	return 0;
}
2022/10/22 08:20
加载中...