#3 # 4 #5 TLE,玄关改代码QWQ
查看原帖
#3 # 4 #5 TLE,玄关改代码QWQ
931492
xiaohuanxiong楼主2024/3/18 22:52

帮帮孩子吧,调了一晚上快疯了!QWQ

#include <bits/stdc++.h>
using namespace std;
struct Node
{
	int data;
	Node *pre,*next;
};
Node *head,*tail,*temp,*t;
int n,m,k,p,q,a[100001]={};
int main()
{
	scanf("%d",&n);
	head=new Node;
	tail=new Node;
	head->data=1;
	head->next=tail;
	tail->pre=head;
	for (int i=2;i<=n;i++)
	{
		scanf("%d%d",&k,&p);
		if (p==0)
		{
			for (t=head;;t=t->next)
			{
				if (t==tail)
					break;
				if (t->data==k)
				{
					if (t==head)
					{
						temp=new Node;
						head->pre=temp;
						temp->data=i;
						temp->next=head;
						head=temp;
						break;
					}
					else
					{
						temp=new Node;
						t->pre->next=temp;
						temp->pre=t->pre;
						temp->data=i;
						temp->next=t;
						t->pre=temp;
						break;
					}
				}
			}
		}
		else
		{
			for (t=head;;t=t->next)
			{
				if (t==tail)
					break;
				if (t->data==k)
				{
					if (t->next==tail)
					{
						temp=new Node;
						tail->pre=temp;
						temp->next=tail;
						t->next=temp;
						temp->pre=t;
						temp->data=i;
						break;
					}
					else
					{
						temp=new Node;
						t->next->pre=temp;
						temp->next=t->next;
						t->next=temp;
						temp->pre=t;
						temp->data=i;
						break;
					}
				}
			}
		}
	}
	scanf("%d",&m);
	while (m--)
	{
		scanf("%d",&q);
		a[q]=1;
	}
	for (t=head;;t=t->next)
	{
		if (t==tail)
			break;
		if (a[t->data]!=1)
			printf("%d ",t->data);
	}
 	return 0;
}

2024/3/18 22:52
加载中...