Cho một đồ thị vô hướng gồm n đỉnh và m cạnh. Mỗi cạnh nối hai đỉnh u, v.
Hãy tìm một đường đi Euler trong đồ thị, tức là một dãy các đỉnh sao cho:
- Mỗi cạnh của đồ thị được đi qua đúng một lần
- Các cạnh đi liên tiếp phải có chung đỉnh
- Đường đi có thể bắt đầu và kết thúc tại hai đỉnh khác nhau
Dữ liệu vào: test.inp
Dòng 1: hai số nguyên n, m
(1 <= n <= 10^5, 1 <= m <= 10^5)
m dòng tiếp theo, mỗi dòng gồm 2 số nguyên u, v (biểu thị cạnh nối giữa u và v)
Dữ liệu ra: test.out
- Nếu tồn tại đường đi Euler:
Ghi ra một dòng gồm các đỉnh theo thứ tự đi của đường đi Euler - Nếu không tồn tại:
Ghi: NO
Chú ý:
- Nếu có nhiều đường đi Euler, in ra một đường bất kỳ
- Đồ thị có thể không liên thông
- Nếu tồn tại đúng 0 hoặc 2 đỉnh có bậc lẻ thì có đường đi Euler
- Nếu tất cả các đỉnh đều có bậc chẵn thì tồn tại chu trình Euler