23.A3. CTDL> bài Đường bay dài nhất
Đường bay dài nhất
Trong một ngày đẹp trời, FullHouse Dev đang tham quan một cánh đồng rộng lớn thì nhận được một bài toán thú vị. Họ được yêu cầu tìm đường bay dài nhất giữa hai thành phố, đi qua càng nhiều điểm dừng càng tốt.
Bài toán
FullHouse Dev cần tìm đường bay từ Syrjälä đến Lehmälä sao cho đi qua được nhiều thành phố nhất có thể. Họ được cung cấp danh sách các chuyến bay khả dụng và biết rằng không có chu trình có hướng nào trong mạng lưới bay này.
INPUT FORMAT:
- Dòng đầu tiên chứa hai số nguyên \(n\) và \(m\): số lượng thành phố và số lượng chuyến bay. Các thành phố được đánh số từ \(1\) đến \(n\). Thành phố \(1\) là Syrjälä, và thành phố \(n\) là Lehmälä.
- \(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a\) và \(b\): thể hiện một chuyến bay một chiều từ thành phố \(a\) đến thành phố \(b\).
OUTPUT FORMAT:
- Dòng đầu tiên in ra số lượng thành phố tối đa có thể đi qua.
- Dòng thứ hai in ra các thành phố theo thứ tự sẽ đi qua.
- Nếu không có đường đi khả thi, in ra "IMPOSSIBLE".
Ràng buộc:
- \(2 \leq n \leq 10^5\)
- \(1 \leq m \leq 2 \cdot 10^5\)
- \(1 \leq a,b \leq n\)
Ví dụ
INPUT
5 5
1 2
2 5
1 3
3 4
4 5
OUTPUT
4
1 3 4 5
Giải thích
Trong ví dụ này, đường đi tối ưu là đi từ thành phố 1 (Syrjälä) → 3 → 4 → 5 (Lehmälä), đi qua tổng cộng 4 thành phố. Mặc dù có thể đi theo đường 1 → 2 → 5, nhưng đường đi này chỉ đi qua 3 thành phố, không phải là tối ưu.
Comments