急!!求助
c++后三个测试点runtime error
怎么办 好人一生平安!!
#include<iostream>
using namespace std;
struct node{
int l, r;
}a[10005];
void lf(int i, int k){
int p = a[k].l;
a[k].l = i;
a[i].r = k;
a[p].r = i;
a[i].l = p;
}
void rf(int i, int k){
int p = a[k].r;
a[k].r = i;
a[i].l = k;
a[p].l = i;
a[i].r = p;
}
void de(int x){
int p = a[x].l, q = a[x].r;
if(p == -1 && q == -1) return;
a[x].l = -1;
a[x].r = -1;
a[p].r = q;
if(q != -1) a[q].l = p;
}
int main(){
int n, k, op, m, x;
cin>>n;
a[0].l = -1;
a[0].r = 1;
a[1].l = 0;
a[1].r = -1;
for(int i = 2; i <= n; i++){
cin>>k>>op;
if(op == 0) lf(i, k);
else rf(i, k);
}
cin>>m;
for(int i = 1; i <= m; i++){
cin>>x;
de(x);
}
int c = 0;
while(1){
if(a[c].r == -1) break;
c = a[c].r;
cout<<c<<" ";
}
return 0;
}