AC代码
#include<bits/stdc++.h>
using namespace std;
int n,Next[1000100],k,o,last[1000100];
bool aa[10000000];
int main() {
// freopen("arrange.in","r",stdin);
// freopen("arrange.out","w",stdout);
cin>>n;
Next[0]=1;
Next[1]=1000000;
last[1]=0;
last[0]=1000000;
for(int i=1; i<=n; i++) {
aa[i]=1;
}
for(int i=2; i<=n; i++) {
cin>>k>>o;
if(o==1) {
int klp=Next[k];
Next[k]=i;
last[i]=k;
Next[i]=klp;
last[klp]=i;
}
if(o==0) {
int klp=last[k];
last[k]=i;
Next[i]=k;
last[i]=klp;
Next[klp]=i;
}
}
int yyds,m;
cin>>m;
while(m--) {
cin>>yyds;
if(aa[yyds]!=0) {
int ui=Next[yyds];
int iu=last[yyds];
last[yyds]=0;
Next[yyds]=0;
last[ui]=iu;
Next[iu]=ui;
}
aa[yyds]=0;
}
for(int i=Next[0];i!=1000000;i=Next[i]) {
cout<<i<<' ';
}
return 0;
}
60分代码
#include<bits/stdc++.h>
using namespace std;
int n,Next[100001],k,o,last[100001];
bool aa[10000000];
int main() {
// freopen("arrange.in","r",stdin);
// freopen("arrange.out","w",stdout);
cin>>n;
Next[0]=1;
Next[1]=100000;
last[1]=0;
last[0]=100000;
for(int i=1; i<=n; i++) {
aa[i]=1;
}
for(int i=2; i<=n; i++) {
cin>>k>>o;
if(o==1) {
int klp=Next[k];
Next[k]=i;
last[i]=k;
Next[i]=klp;
last[klp]=i;
}
if(o==0) {
int klp=last[k];
last[k]=i;
Next[i]=k;
last[i]=klp;
Next[klp]=i;
}
}
int yyds,m;
cin>>m;
while(m--) {
cin>>yyds;
if(aa[yyds]!=0) {
int ui=Next[yyds];
int iu=last[yyds];
last[yyds]=100000;
Next[yyds]=100000;
last[ui]=iu;
Next[iu]=ui;
}
aa[yyds]=0;
}
for(int i=Next[0]; i!=100000; i=Next[i]) {
cout<<i<<' ';
}
return 0;
}