E. [R30E]彩色小球

    Type: Default 1000ms 512MiB

[R30E]彩色小球

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

时空限制

1S/512M

题目描述

nn 个小球,它们从 11nn 编号。每个小球 ii 都有一个颜色 cic_i,且第 ii 个小球上写有数字 ii

现在需要将这 nn 个小球从左到右排成一排,这个排列需要满足以下两个条件:

  • 所有相同颜色的小球必须形成一个连续的块。
  • 给定 mm 个限制条件,每个限制形如 (ui,vi)(u_i, v_i),表示编号为 uiu_i 的小球必须出现在编号为 viv_i 的小球的左边

你的任务是找到一个满足所有条件的排列,并使得该排列(由小球编号组成)的字典序最小。如果没有满足条件的排列,输出 -1

字典序:对于两个长度为 nn 的序列 A=(a1,a2,,an)A = (a_1, a_2, \ldots, a_n)B=(b1,b2,,bn)B = (b_1, b_2, \ldots, b_n),如果存在一个位置 kk 使得对于所有 j<kj < k 都有 aj=bja_j = b_j,并且 ak<bka_k < b_k,那么我们称序列 AA 的字典序小于序列 BB

格式

输入格式

第一行包含两个整数 n,mn, m,分别表示小球的数量和限制条件的数量。

第二行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n,表示编号为 ii 的小球的颜色是 cic_i

接下来 mm 行,每行包含两个整数 ui,viu_i, v_i,表示一个限制条件。

输出格式

输出一行 nn 个整数,代表字典序最小的小球编号序列。整数之间用空格隔开。

如果不存在这样的排列,则输出 -1

样例

样例输入 #1

4 1
1 2 1 2
3 1

样例输出 #1

2 4 3 1

样例输入 #2

4 1
1 2 1 2
1 4

样例输出 #2

1 3 2 4

数据规模

对于 10%10\% 的数据,1n,m101 \leq n ,m \leq 10

对于 40%40\% 的数据,1n,m20001 \le n, m \le 2000

对于 100%100\% 的数据,1n,m2×1051 \le n, m \le 2 \times 10^51cin1 \le c_i \le n1ui,vin1 \le u_i, v_i \le n,且 uiviu_i \not = v_i

代码源挑战赛 Round 30

Not Attended
Status
Done
Rule
DMY
Start at
2025-9-19 20:00
End at
2025-9-19 21:30
Duration
1.5 hour(s)
Host
Partic.
392