蒟蒻求助
查看原帖
蒟蒻求助
421072
是个人。楼主2021/2/22 09:12
#include <bits/stdc++.h>
using namespace std;
inline int read(){
	int r=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')
	r=(r<<1)+(r<<3)+(c^48),c=getchar();
	return r*f;
}
int n,m,x[100005][3],xx,k,mark[100005];
int main(){
	cin>>n;
	x[1][1]=1;
	for(int i=2;i<=n;i++){
		xx=read(),k=read();
		if(!k){
			x[i][2]=x[xx][2];
			x[x[xx][2]][3]=i;
			x[xx][2]=i;
			x[i][3]=xx;
		}
		else {
			x[i][2]=xx;
			x[i][3]=x[xx][3];
			x[x[xx][3]][2]=i;
			x[xx][3]=i;
		}
	}
	cin>>m;
	while(m--){
		xx=read();
		if(mark[xx])continue;
		int cnt=x[xx][2];
		x[x[xx][2]][3]=x[xx][3];
		x[x[xx][3]][2]=cnt;
//		**x[xx][3]=0,x[xx][2]=0; **
		mark[xx]=1;
	}
	int l=1;
	while(x[l][2]>0)
	l=x[l][2];
	do{
		printf("%d ",l);
		l=x[l][3];
	}while(x[l][3]>0);
	cout<<l<<endl;
} 

x[xx][3]=0,x[xx][2]=0; 这段为什么不删就会wa?

2021/2/22 09:12
加载中...