数组模拟双链表40 判重没错,哪有问题?
查看原帖
数组模拟双链表40 判重没错,哪有问题?
770457
csvoner楼主2024/3/14 22:04
#include <bits/stdc++.h>
using namespace std;

const int N = 100010;

int n, m;
int e[N], l[N], r[N], idx;

void init()
{
    r[0] = 1, l[1] = 0;
    idx = 2;
}

void insert(int a, int x)
{
    e[idx] = x;
    l[idx] = a, r[idx] = r[a];
    l[r[a]] = idx, r[a] = idx ++ ;
}

void remove(int a)
{
    l[r[a]] = l[a];
    r[l[a]] = r[a];
}


int main()
{
	scanf("%d", &n);
	init();
	insert(0, 1);
	
	for (int i = 2; i <= n; i ++ )
	{
		int a, b;
		scanf("%d%d", &a, &b);
		if (b == 0) insert(l[a + 1], i);
		else insert(a + 1, i);
	}

	scanf("%d", &m);
	while (m -- )
	{
		int a;
		scanf("%d", &a);
		
		if (e[a + 1]) remove(a + 1);
		else continue;
	}
	
	 for (int i = r[0]; i != 1; i = r[i]) cout << e[i] << ' ';
	
	return 0;
} 
2024/3/14 22:04
加载中...