#abc304h. [abc304_h]Constrained Topological Sort

[abc304_h]Constrained Topological Sort

问题陈述

给定一个有NN个顶点和MM条边的有向图。对于i=1,2,ldots,M i = 1, 2, \\ldots, M ,第ii条边从顶点sis_i指向顶点tit_i

确定是否存在一个排列P=(P1,P2,ldots,PN)P=(P_1, P_2, \\ldots, P_N),满足以下两个条件,如果存在,提供一个示例。

  • 对于所有i=1,2,ldots,Mi = 1, 2, \\ldots, M,有PsiltPtiP_{s_i} \\lt P_{t_i}
  • 对于所有i=1,2,ldots,Ni = 1, 2, \\ldots, N,有LileqPileqRiL_i \\leq P_i \\leq R_i

约束条件

  • 2leqNleq2times1052 \\leq N \\leq 2 \\times 10^5
  • $0 \\leq M \\leq \\min\\lbrace 4 \\times 10^5, N(N-1) \\rbrace$
  • 1leqsi,tileqN1 \\leq s_i, t_i \\leq N
  • sineqtis_i \\neq t_i
  • ineqjimplies(si,ti)neq(sj,tj)i \\neq j \\implies (s_i, t_i) \\neq (s_j, t_j)
  • 1leqLileqRileqN1 \\leq L_i \\leq R_i \\leq N
  • 所有输入值都是整数。

输入

从标准输入中按以下格式给出输入:

NN MM s1s_1 t1t_1 s2s_2 t2t_2 vdots\\vdots sMs_M tMt_M L1L_1 R1R_1 L2L_2 R2R_2 vdots\\vdots LNL_N RNR_N

输出

如果不存在满足条件的PP,则输出No。如果存在满足条件的PP,则在第一行打印Yes,在第二行以空格分隔的形式打印PP的元素,格式如下。如果有多个满足条件的PP,则接受任何一个。

Yes P1P_1 P2P_2 ldots\\ldots PNP_N


示例输入1

5 4
1 5
2 1
2 5
4 3
1 5
1 3
3 4
1 3
4 5

示例输出1

Yes
3 1 4 2 5

P=(3,1,4,2,5)P = (3, 1, 4, 2, 5) 满足条件。事实上,

  • 对于第一条边(s1,t1)=(1,5)(s_1, t_1) = (1, 5),我们有 P1=3lt5=P5P_1 = 3 \\lt 5 = P_5
  • 对于第二条边(s2,t2)=(2,1)(s_2, t_2) = (2, 1),我们有 P2=1lt3=P1P_2 = 1 \\lt 3 = P_1
  • 对于第三条边(s3,t3)=(2,5)(s_3, t_3) = (2, 5),我们有 P2=1lt5=P5P_2 = 1 \\lt 5 = P_5
  • 对于第四条边(s4,t4)=(4,3)(s_4, t_4) = (4, 3),我们有 P4=2lt4=P3P_4 = 2 \\lt 4 = P_3

此外,

  • L1=1leqP1=3leqR1=5L_1 = 1 \\leq P_1 = 3 \\leq R_1 = 5
  • L2=1leqP2=1leqR2=3L_2 = 1 \\leq P_2 = 1 \\leq R_2 = 3
  • L3=3leqP3=4leqR3=4L_3 = 3 \\leq P_3 = 4 \\leq R_3 = 4
  • L4=1leqP4=2leqR4=3L_4 = 1 \\leq P_4 = 2 \\leq R_4 = 3
  • L5=4leqP5=5leqR5=5L_5 = 4 \\leq P_5 = 5 \\leq R_5 = 5

示例输入2

2 2
1 2
2 1
1 2
1 2

示例输出2

No

没有满足条件的PP,因此输出No