// 題目

編號優先的修課順序

Smallest-First Course Order・apcs-26-01

  • APCS 高級
  • DAG 上的 DP
  • APCS 實作專題・Graph — DAG & Topo DP

時間限制 1 秒・記憶體 64 MB

到 Aki-Judge 送出

送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。

題目敘述

社團的課程表上有 n 門課,編號為 1 到 n。有些課有先修關係:「u v」代表必須先修完第 u 門課,才能修第 v 門課。每門課恰好修一次,一次只修一門。

請找出一個安排順序,使所有限制都被滿足,而且在所有合法順序中字典序最小(把順序當成長度為 n 的數列,由左至右比較,第一個不同的位置上數字較小者較小)。若不存在任何合法順序,輸出 −1。

輸入格式

第一行有兩個整數 n 與 m,分別是點數與邊數。接下來 m 行,每行兩個整數 u 與 v,表示一條從 u 指向 v 的有向邊。

輸出格式

若有合法順序,輸出一行,包含 n 個以空白分隔的整數,即字典序最小的順序;否則輸出一個整數 −1。

限制

  • 1 ≤ n ≤ 100
  • 0 ≤ m ≤ 500

範例

範例 1

輸入

4 3
1 2
2 3
1 4

輸出

1 2 3 4

範例 2

輸入

2 0

輸出

1 2

說明

  • 範例 1 中,1 必須在 2 與 4 之前,2 必須在 3 之前。
  • 範例 2 沒有任何限制,直接由小到大排列即可。

到 Aki-Judge 送出

送出程式要先用 Discord 帳號登入 Aki-Judge,並加入註解 Annotated 的 Discord 伺服器(免費)。看題目不用登入。

卡住了可以到 Discord 的 #程式問題 發問,小墨助教會先給提示,不會直接給答案。