WA40求调
#include <bits/stdc++.h>
#define mem(a,b) memset((a),(b),sizeof(a))
#define MP make_pair
#define pb push_back
#define fi first
#define se second
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
#define sqr(x) (x)*(x)
#define REP(i,j) for(int i=0;i<j;i++)
#define REP1(i,j) for(int i=1;i<=j;i++)
using namespace std;
using namespace __gnu_cxx;
typedef int I;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<I,I> PII;
typedef pair<ll,ll> PLL;
typedef pair<I,ll> PIL;
typedef pair<ll,I> PLI;
typedef vector<I> VI;
typedef vector<ll> VL;
typedef vector<PII> VPII;
typedef vector<string> VS;
typedef greater<I> GI;
typedef priority_queue<I> PQI;
typedef priority_queue<I,VI,GI> PQV;
/************* define end *************/
void println(VI x){for(I i=0;i<sz(x);i++) printf("%d%c",x[i]," \n"[i==sz(x)-1]);}
void println(VL x){for(I i=0;i<sz(x);i++) printf("%lld%c",x[i]," \n"[i==sz(x)-1]);}
void println(I *x,I l,I r){for(I i=l;i<=r;i++) printf("%d%c",x[i]," \n"[i==r]);}
void println(ll *x,I l,I r){for(I i=l;i<=r;i++) printf("%lld%c",x[i]," \n"[i==r]);}
void pri(ll x,ll y){printf("%lld %lld\n",x,y);}
void pri(I x,I y){printf("%d %d",x,y);}
void pri(ll x){printf("%lld\n",x);}
void pri(int x){printf("%d\n",x);}
/*************** IO end ***************/
void go();//主函数
int main(){
//#ifdef tokitsukaze
//freopen("TEST.txt","r",stdin);
//#endif
go();return 0;
}
const int INF=0x3f3f3f3f;
const ll LLINF=0x3f3f3f3f3f3f3f3fLL;
const double PI=acos(-1.0);
const double eps=1e-6;
const int MAX=1e5+10;
const ll mod=998244353;
/********************************* head *********************************/
struct student{
int l,r;
}st[MAX];
void go(){
I n,m,x,h,vis[MAX];
cin>>n;
st[0].l=1;st[0].r=1;
st[1].l=0;st[1].r=0;
for(int i=2;i<=n;i++){
scanf("%d%d",&x,&h);
if(h==0){
st[i].l=st[x].l;
st[x].l=i;
st[i].r=x;
st[st[i].l].r=i;
}else if(h==1){
st[i].r=st[x].r;
st[x].r=i;
st[i].l=x;
st[st[i].r].l=i;
}
}
//REP(i,n+1)printf("st[%d](l:%d r:%d)\n",i,st[i].l,st[i].r);
cin>>m;
REP1(i,m){
scanf("%d",&x);
if(st[x].l==-1)continue;
st[st[x].l].r=st[x].r;
st[st[x].r].l=st[x].l;
st[x].l=-1;
st[x].r=-1;
}
//REP(i,n+1)printf("st[%d](l:%d r:%d)\n",i,st[i].l,st[i].r);
h=st[0].r;
while(1){
if(!vis[h] && h){
printf("%d ",h);
vis[h]++;
h=st[h].r;
}else return ;
}
return ;
}
后三点全WA。