没有输出(链表求调)(调了40分钟了!!)
查看原帖
没有输出(链表求调)(调了40分钟了!!)
490978
小超手123楼主2022/3/2 20:26
#include<bits/stdc++.h>
using namespace std;
int n,tot=0,m;
struct node{
	int l,r;
	int v;
	node(int ll=0,int rr=0,int vv=0){
		l=ll,r=rr,v=vv;
	}
};
node a[100000];
int d[1000000]; //d[i]=j 表是i号同学的编号为j
void cr(int x,int y){
	tot++;
	a[tot].v=y;
	int dx=d[x];
	int dy=tot;
	int dz=a[dx].r;
	a[dx].r=dy;
	a[dy].r=dz;
	a[dy].l=dx;
	a[dz].l=dy;
	d[y]=tot;
}
void cl(int y,int x){
	tot++;
	a[tot].v=y;
	int dx=d[x];
	int dy=tot;
	int dz=a[dx].l;
	a[dz].r=dy;
	a[dy].r=dx;
	a[dx].l=dy;
	a[dy].l=dz;
	d[y]=tot;
}
void sc(int x){
	int dx=d[x];
	int dy=a[dx].l;
	int dz=a[dx].r;
	a[dy].r=dz;
	a[dz].l=dy;
	a[x]=0;
}
int main(){
	cin>>n;
	a[tot].r=1;
	a[tot].v=0;
	d[0]=0;
	tot++;
	a[tot].r=2;
	a[tot].l=0;
	a[tot].v=1;
	d[1]=1;
	for(int i=2;i<=n;i++){
		int k,p;
		cin>>k>>p;
		if(p){ // k i
			cr(k,i);
		}
		else{
			cl(i,k);
		}
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		int x;
		cin>>x;
		if(d[x]) sc(x);
	}
	int x=a[0].r;
	while(x!=0){
		cout<<a[x].v<<" ";
		x=a[x].r;
	}
	return 0;
}
2022/3/2 20:26
加载中...