P1160
  • 板块题目总版
  • 楼主Phantom_HY
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/6/19 08:50
  • 上次更新2023/10/27 23:01:40
查看原帖
P1160
694995
Phantom_HY楼主2022/6/19 08:50

队列安排WA了3个点

#include<bits/stdc++.h>
using namespace std;
int n,m,x,k,p;
struct node{
	int num,net,pre;
}A[500005];
void link(int a,int b,int f){
	if (f==0)
		A[b].net=a,A[b].pre=A[a].pre,A[A[a].pre].net=b,A[a].pre=b;
	else
		A[b].net=A[a].net,A[b].pre=a,A[A[a].net].pre=b,A[a].net=b;
}
void remove(int a,int b){
	A[a].net=A[b].net,A[A[b].net].pre=A[b].pre;
}
int main()
{
	scanf("%d",&n);
	A[0].num=-1,A[1].num=1,A[0].net=1,A[1].pre=0,A[n+1].num=-1,A[1].net=n+1,A[n+1].pre=1;
	for (int i=2;i<=n;i++)
		scanf("%d%d",&k,&p),A[i].num=i,link(k,i,p);
	scanf("%d",&m);
	while(m--)
		scanf("%d",&x),remove(A[x].pre,x);
	for (int f=A[0].net;A[f].num!=-1;f=A[f].net)printf("%d ",A[f].num);
	return 0;
}
2022/6/19 08:50
加载中...