#ABC478E. 小于与小于等于 / lt and le

小于与小于等于 / lt and le

题目描述

判断是否存在一个长度为 NN、由 11 到 NN 之间(含两端)的整数组成的整数序列 AA,满足以下全部 QQ 个条件;若存在,请求出其中一个。

第 ii 个条件 (1≤i≤Q)(1 \le i \le Q) 由整数三元组 (ti,ui,vi)(t_i, u_i, v_i) 给出,定义如下。

  • 若 ti=0t_i = 0:Aui≤AviA_{u_i} \le A_{v_i}
  • 若 ti=1t_i = 1:Aui<AviA_{u_i} \lt A_{v_i}

若存在多个满足全部条件的序列,输出其中任意一个即可。

输入格式

输入按以下格式从标准输入读入:

  • NN QQ
  • t1t_1 u1u_1 v1v_1
  • t2t_2 u2u_2 v2v_2
  • ⋮\vdots
  • tQt_Q uQu_Q vQv_Q

输出格式

第一行:若存在满足条件的整数序列则输出 Yes,否则输出 No。若第一行输出 Yes,则第二行输出一个满足条件的整数序列,各元素之间用空格分隔。若存在多个满足全部条件的序列,输出其中任意一个即可。

7 8
0 1 4
0 2 6
0 3 2
1 3 5
0 4 1
0 4 3
1 5 7
0 6 7
Yes
1 4 2 1 3 5 6

令 A=(1,4,2,1,3,5,6)A=(1,4,2,1,3,5,6);这是一个长度为 77、由 11 到 77 之间(含两端)的整数组成的整数序列。例如,第一个条件 A1≤A4A_1 \le A_4 成立,因为 1≤11 \le 1。其余七个条件也都成立,因此对应 A=(1,4,2,1,3,5,6)A=(1,4,2,1,3,5,6) 的输出被视为正确。

此外,A=(1,1,1,1,2,2,3)A=(1,1,1,1,2,2,3)、A=(3,5,4,3,6,7,7)A=(3,5,4,3,6,7,7) 等也满足条件,因此输出这些也被视为正确。

1 1
1 1 1
No

不存在满足 A1<A1A_1 \lt A_1 的整数序列 AA。

15 20
0 9 8
1 6 1
0 6 8
0 11 1
0 4 2
1 11 12
0 4 14
1 10 1
0 12 12
1 7 12
1 13 1
1 5 9
1 10 14
1 14 1
1 8 12
0 10 12
1 4 15
1 3 9
0 5 14
0 10 2
Yes
15 14 10 7 6 5 4 12 11 3 2 13 1 9 8

数据范围

  • 1≤N≤2×1051 \le N \le 2 \times 10^5

  • 1≤Q≤2×1051 \le Q \le 2 \times 10^5

  • ti∈{0,1} (1≤i≤Q)t_i \in \lbrace 0, 1 \rbrace\ (1 \le i \le Q)

  • 1≤ui≤N (1≤i≤Q)1 \le u_i \le N\ (1 \le i \le Q)

  • 1≤vi≤N (1≤i≤Q)1 \le v_i \le N\ (1 \le i \le Q)

  • 输入中的所有值均为整数。

  • 来源:AtCoder ABC 478 E

子任务设置

  • 子任务 1(30 分):N,Q≤2000N, Q \le 2000。
  • 子任务 2(30 分):N≤2×105N \le 2 \times 10^5 且 Q≤2000Q \le 2000。
  • 子任务 3(40 分):无特殊限制。