進階班例題
作業順序是否可行
時間限制 1000 ms · 記憶體限制 256 MB · C++
小明要完成 $N$ 項作業,部分作業有前後順序的限制,例如作業 $u$ 必須在作業 $v$ 之前完成。
請判斷是否存在一種合法的完成順序,也就是能將所有作業排序,使每個限制都滿足。
輸入說明
- 第一行輸入兩個整數 $N, M$。
- 接下來 $M$ 行,每行輸入兩個整數 $u, v$,表示作業 $u$ 必須在作業 $v$ 之前完成。
- $1 \leq N \leq 10^5$
- $0 \leq M \leq 2 \times 10^5$
- $1 \leq u, v \leq N$
輸出說明
若存在至少一種合法順序,請輸出YES,否則輸出NO。
範例
範例輸入 1
3 2 1 2 2 3
範例輸出 1
YES
範例輸入 2
3 3 1 2 2 3 3 1
範例輸出 2
NO
範例輸入 3
4 2 1 3 2 3
範例輸出 3
YES
C++77 / 50,000
「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。