Andrew và những chiếc taxi
Đề bài
Mô tả
Thành phố có ngã tư được đánh số từ đến và con đường một chiều. Con đường thứ cho phép đi từ ngã tư đến ngã tư và chỉ theo chiều đó.
Các tài xế taxi phát hiện ra rằng nếu mạng lưới đường còn chu trình thì họ có thể chạy vòng tròn mãi mãi để đẩy giá cước lên. Thị trưởng quyết định đảo chiều một số con đường sao cho điều đó không còn xảy ra: sau khi đảo, không tài xế nào xuất phát từ một ngã tư bất kỳ có thể quay lại đúng ngã tư đó bằng một hành trình khác rỗng.
Muốn đảo chiều con đường thứ thì cần cảnh sát giao thông. Các con đường được đảo lần lượt từng đường một, nên cùng một cảnh sát có thể tham gia đảo nhiều con đường khác nhau. Do đó số cảnh sát cần thuê bằng giá trị lớn nhất trong các con đường được đảo, chứ không phải tổng của chúng. Nếu không cần đảo con đường nào thì không cần thuê cảnh sát.
Hãy tìm số cảnh sát giao thông ít nhất cần thuê, cùng với một danh sách các con đường được đảo chiều tương ứng.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên và : số ngã tư và số con đường.
- Dòng thứ trong dòng tiếp theo chứa ba số nguyên , , : con đường thứ đi từ đến và cần cảnh sát để đảo chiều.
Dữ liệu ra
- Dòng đầu tiên in ra hai số nguyên: số cảnh sát giao thông ít nhất cần thuê và số lượng con đường được đảo chiều. Giá trị không cần nhỏ nhất.
- Dòng thứ hai in ra số nguyên cách nhau bởi dấu cách: chỉ số các con đường được đảo chiều, đánh số từ theo thứ tự trong dữ liệu vào. Nếu thì in ra một dòng trống.
Nếu có nhiều đáp án, in ra đáp án nào cũng được.
Ràng buộc
- ,
- Có thể có nhiều con đường nối cùng một cặp ngã tư, kể cả hai con đường ngược chiều nhau giữa cùng một cặp ngã tư.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 6 2 1 1 5 2 6 2 3 2 3 4 3 4 5 5 1 5 4 |
2 2 1 3 |
Mạng lưới có hai chu trình: và . Một cảnh sát chỉ đảo được con đường (đường , giá ), nhưng như vậy chu trình thứ hai vẫn còn. Với hai cảnh sát ta đảo được cả con đường và con đường (giá ), phá được cả hai chu trình. Vì hai cảnh sát này làm việc lần lượt nên tổng chi phí vẫn chỉ là người. |
| 5 7 2 1 5 3 2 3 1 3 3 2 4 1 4 3 5 5 4 1 1 5 3 |
3 3 2 6 7 |
Chu trình gồm các con đường giá , , ; muốn phá nó phải đảo ít nhất một con đường trên đó, rẻ nhất là giá . Với ba cảnh sát ta đảo các con đường , , (giá , , ) và mạng lưới không còn chu trình. Đáp án khác cũng được chấp nhận miễn là số cảnh sát vẫn là . |
Bình luận