Report problem solving: luogu P1160

Topic links: p1160 arrangements queue
list board questions, but I will not waste too pointers, fortunately Arrays can be used to simulate the list, and then really the situation as before.
Do not forget to update the relevant elements just fine.

\(Code\):

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
//模板题就先不尛了 
#define MAXN 1000005
struct node
{
	int l,r;	
}a[MAXN];
#define read(x) scanf("%d",&x) 
int n,m,k,p;
int vis[MAXN];
int f;
int main()
{
	a[1].l=a[1].r=0;
	read(n);
	for(int i=2;i<=n;i++)
	{
		read(k),read(p);
		if(p==0) a[i].l=a[k].l,a[i].r=k,a[a[k].l].r=i,a[k].l=i;
		else a[i].r=a[k].r,a[i].l=k,a[a[k].r].l=i,a[k].r=i;
	}
	read(m);
	for(int i=1;i<=m;i++)
	{
		read(k);
		if(vis[k]) continue;
		vis[k]=1;
		int h=a[k].l,t=a[k].r;
		a[h].r=t,a[t].l=h;
	}
	for(int i=1;i<=n;i++) if(!vis[i]&&a[i].l==0) f=i;
	while(f)
	{
		printf("%d ",f);
		f=a[f].r;
	}
	printf("\n");
	return 0;
} 

Guess you like

Origin www.cnblogs.com/tlx-blog/p/12631465.html