071 - Fuzzy Priority(★7) Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 7

問題文

(1,2,3, \cdots ,N) の順列 P = (P_1,P_2,P_3, \cdots ,P_N) であって、以下の条件を満たすものを K 個求めてください。 K 個存在しない場合は、そのことを報告してください。

  • i=1,2,3, \cdots ,M について、順列 P の中で A_iB_i よりも前にある。

制約

  • 1 \leq N \leq 10^5
  • 0 \leq M \leq 10^5
  • 1 \leq K \leq 10
  • 1 \leq A_i \leq N
  • 1 \leq B_i \leq N
  • A_i \neq B_i
  • i \neq j ならば (A_i,B_i) \neq (A_j,B_j)
  • 入力はすべて整数

小課題・得点

この問題はいくつかの小課題に分けられ、その小課題のすべてのテストケースに正解した場合に「この小課題に正解した」とみなされます。
提出したソースコードの得点は、正解した小課題の点数の合計となります。

  1. (2 点): N \leq 10^3
  2. (3 点): K = 1
  3. (2 点): 追加の制約はない。

入力

入力は以下の形式で標準入力から与えられます。

N M K
A_1 B_1
A_2 B_2
\vdots
A_M B_M

出力

条件を満たす順列 PK 個存在しない場合は -1 を出力してください。

存在する場合の出力は K 行からなります。各行には、条件を満たす順列 P を以下の形式で出力してください。

P_1 P_2 P_3 \cdots P_N

K 個の順列は相異なる必要があります。


入力例 1

5 2 3
1 2
3 4

出力例 1

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

この入力例は小課題 1,3 のみの制約を満たします。

順列 P の条件は

  • 12 よりも前にある
  • 34 よりも前にある

2 つを両方満たすことです。

この条件を満たす相異なる K 個の順列であれば、出力例と異なる順列を出力しても正解となります。また、 K 個の順列を出力する順番が異なっていても正解となります。


入力例 2

5 2 1
1 3
3 1

出力例 2

-1

この入力例はすべての小課題の制約を満たします。

条件を満たす順列は 1 つも存在しません。


入力例 3

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

出力例 3

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

この入力例は小課題 1,3 のみの制約を満たします。


Source Name

「競プロ典型90問」71日目