CSES - Split into Two Paths | Chia Thành Hai Đường Đi
Xem PDFCho một đồ thị có hướng không chu trình với \(n\) đỉnh và \(m\) cạnh.
Hãy xác định liệu có thể tạo hai đường đi trong đồ thị sao cho mỗi đỉnh của đồ thị xuất hiện đúng một lần trong một trong hai đường đi hay không. Lưu ý rằng không nhất thiết tất cả các cạnh của đồ thị phải xuất hiện trong các đường đi.
Input
Dòng đầu tiên chứa hai số nguyên \(n\) và \(m\): số đỉnh và số cạnh. Các đỉnh được đánh số \(1, 2, \dots, n\).
Sau đó có \(m\) dòng mô tả các cạnh. Mỗi dòng chứa hai số nguyên \(a\) và \(b\): có một cạnh trong đồ thị từ đỉnh \(a\) đến đỉnh \(b\).
Output
Đầu tiên in ra dòng YES nếu có thể tạo các đường đi, hoặc NO nếu không.
Nếu có thể tạo các đường đi, hãy in chúng trên hai dòng tiếp theo.
Ở đầu mỗi dòng, in số lượng đỉnh trong đường đi, sau đó là các đỉnh của đường đi theo thứ tự. Giữa hai đỉnh liên tiếp phải có một cạnh trong đồ thị. Một trong hai đường đi có thể chứa không đỉnh nào.
Nếu có nhiều lời giải, bạn có thể in ra bất kỳ lời giải nào.
Constraints
-
\(2 \le n \le 2\cdot10^5\)
-
\(0 \le m \le 5\cdot 10^5\)
Example
Test 1
Input
5 4
1 2
1 4
3 4
4 5
Output
YES
2 1 2
3 3 4 5
Test 2
Input
5 4
1 2
1 3
1 4
1 5
Output
NO
Bình luận