题目在这里
我的代码:
#include<iostream>
using namespace std;
int a[1000005],rt[1000005],lf[1000005],n;
void link(int l,int r)
{
rt[l]=r;
lf[r]=l;
}
int main()
{
freopen("arrange.in","r",stdin);
freopen("arrange.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
a[i]=i;
}
link(1,n+1);
link(n+1,0);
link(0,1);
for(int i=2;i<=n;i++)
{
int stu,lr;
cin>>stu>>lr;
if(lr==1)
{
link(i,rt[stu]);
link(stu,i);
}
if(lr==0)
{
link(lf[stu],i);
link(i,stu);
}
// int g=rt[0];
// while(1)
// {
// if(a[g]!=0)
// {
// cout<<a[g]<<' ';
// g=rt[g];
// }
// else break;
// }
// cout<<endl;
}
int k;
cin>>k;
for(int i=1;i<=k;i++)
{
int p;
cin>>p;
link(lf[p],rt[p]);
}
int g=rt[0];
while(1)
{
if(a[rt[g]]!=0)
{
cout<<a[g]<<' ';
g=rt[g];
}
else break;
}
cout<<a[g]<<endl;
return 0;
}
30分7WA,求教大佬!