#B4324. 【模板】双向链表

【模板】双向链表

题目描述

给出 NN 个结点,编号依次为 1N1 \dots N,初始按编号从小到大排列成一条双向链表。

接下来有 MM 条指令,请按要求对链表进行修改。所有操作均保证合法。

指令 含义
1 x y1\ x\ y 将结点 xx 插入到 yy 的左侧(若 x=yx = y 则忽略本条指令)。
2 x y2\ x\ y 将结点 xx 插入到 yy 的右侧(若 x=yx = y 则忽略本条指令)。
3 x3\ x 删除结点 xx;若 xx 已被删除则忽略本条指令。

操作结束后,请按从左到右的顺序输出当前链表中所有结点的编号。

输入格式

第一行输入两个正整数 N,MN,M,表示链表初始的结点数和操作指令数。

接下来 MM 行,每行一条指令,如题意所述。

输出格式

输出一行,即:操作结束后,按从左到右的顺序输出当前链表中所有结点的编号。如果链表不存在结点,输出 Empty!

10 7
1 2 3
2 4 5
3 2
1 9 4
2 7 8
3 4
3 10
1 3 5 9 6 8 7

提示

样例解释

  • 初始时,链表为:1 2 3 4 5 6 7 8 9 101\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9\ 10
  • 第一次操作,将 22 插入到 33 左侧。由于初始时已经符合 2233 左侧,所以链表还是:1 2 3 4 5 6 7 8 9 101\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9\ 10
  • 第二次操作,将 44 插入到 55 的右侧,链表为:1 2 3 5 4 6 7 8 9 101\ 2\ 3\ 5\ 4\ 6\ 7\ 8\ 9\ 10
  • 第三次操作,删除结点 22,链表为:1 3 5 4 6 7 8 9 101\ 3\ 5\ 4\ 6\ 7\ 8\ 9\ 10
  • 第四次操作,将 99 插入到 44 的左侧,链表为:1 3 5 9 4 6 7 8 101\ 3\ 5\ 9\ 4\ 6\ 7\ 8\ 10
  • 第五次操作,将 77 插入到 88 的右侧,链表为:1 3 5 9 4 6 8 7 101\ 3\ 5\ 9\ 4\ 6\ 8\ 7\ 10
  • 第六次操作,删除结点 44,链表为:1 3 5 9 6 8 7 101\ 3\ 5\ 9\ 6\ 8\ 7\ 10
  • 第七次操作,删除结点 1010,链表为:1 3 5 9 6 8 71\ 3\ 5\ 9\ 6\ 8\ 7

数据范围

  • 对于 30%30\% 的数据,1N,M101\leq N,M\leq 10
  • 对于 60%60\% 的数据,1N,M30001\leq N,M\leq 3000
  • 对于所有数据,1N,M5×1051\leq N,M\leq 5\times 10^5