帮帮孩子吧,调了一晚上快疯了!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;
}