手动模拟链表,样例没过求条orz
查看原帖
手动模拟链表,样例没过求条orz
117551
Entity_303楼主2025/7/18 20:53
#include <bits/stdc++.h>
using namespace std;

struct S{
	int left,right,num;
}st[100003];

void add(int k,int p,int i) {
	if(p) {
		st[i].right=st[k].right;
		st[k].right=i;
		st[st[i].right].left=i;
	} 
	else {
		st[i].left=st[k].left;
		st[k].left=i;
		st[st[i].left].right=i;
	} 
}

void del(int p) {
	st[p].num++;
	st[st[p].left].right=st[p].right;
	st[st[p].right].left=st[p].left;
}

int main()
{
	int n,m,k,p;
	scanf("%d",&n);
	add(0,0,1);add(0,1,1);
	for(int i = 2;i <= n;i++) {
		scanf("%d %d",&k,&p);
		add(k,p,i);
//		printf("%d %d %d ",st[i].right,st[i].left,st[i].num);
	}
	scanf("%d",&m);
	for(int i = 1;i<=m;i++) {
		scanf("%d",&k);
		del(k);
	}
	for(int i = 1;st[i].right;i++) {
		if(!st[i].num) printf("%d ",i);
	}
	return 0; 
} 
2025/7/18 20:53
加载中...