解题报告:luogu P1160

Posted tlx-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解题报告:luogu P1160相关的知识,希望对你有一定的参考价值。

题目链接:P1160 队列安排
链表板子题,但是过于垃圾的我不会指针,好在可以用数组去模拟链表,然后果然一发过了。
不要忘了更新有关元素就好。

(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("
");
	return 0;
} 


以上是关于解题报告:luogu P1160的主要内容,如果未能解决你的问题,请参考以下文章

解题报告:luogu P2299

解题报告:luogu P1892

解题报告:luogu P1445

解题报告:luogu P2572

解题报告:luogu P2572

解题报告:luogu P6057