Di chuyển robot
Đề bài
Mô tả
Hệ thống đường ống dẫn dầu có trạm điều áp, đánh số từ đến và đoạn đường ống, đánh số từ đến , mỗi đoạn nối hai trạm điều áp. Hệ thống có tính liên thông, tức là giữa hai trạm điều áp bao giờ cũng có đường ống nối với nhau (trực tiếp hoặc qua các trạm khác). Một đoạn đường ống được gọi là trục nếu việc hỏng đoạn đường ống đó sẽ dẫn đến tình trạng hệ thống mất liên thông. Trong hệ thống mà chúng ta đang xét, có ít nhất một đoạn đường trục.
Do tính chất quan trọng của các đường trục nên chúng được ưu tiên trong công tác duy tu bảo dưỡng. Người ta chế tạo hai robot phục vụ việc kiểm tra đường trục, robot thứ nhất đặt ở trạm , robot thứ hai đặt ở trạm . Với mỗi đoạn đường trục, khi được lệnh kiểm tra, robot thứ nhất xuất phát từ trạm , robot thứ hai xuất phát từ trạm và cùng bắt đầu di chuyển tới hai trạm là hai đầu của đoạn đường trục này (mỗi robot tới một đầu, robot nào tới đầu nào cũng được). Hai robot luôn phải di chuyển và chỉ dừng lại khi cả hai cùng đến đích. Biết rằng, mỗi đơn vị thời gian robot đi được một đoạn đường ống. Thời gian tập kết để kiểm tra đoạn đường trục là thời gian nhỏ nhất để hai robot cùng đến được hai trạm là hai đầu của đoạn đường trục.
Cụ thể, trong mỗi đơn vị thời gian, mỗi robot bắt buộc phải đi hết đúng một đoạn đường ống nối với trạm nó đang đứng (không được đứng chờ). Robot được đi qua một trạm hay một đoạn ống nhiều lần, được quay ngược lại đoạn ống vừa đi, và hai robot có thể cùng ở một trạm. Thời gian tập kết là số nhỏ nhất sao cho sau đúng đơn vị thời gian, hai robot đứng ở hai đầu của đoạn đường trục. Nếu ngay từ đầu robot thứ nhất và robot thứ hai đã đứng ở hai đầu của đoạn đường trục (đoạn đường trục nối trạm với trạm ) thì .
Yêu cầu: Cho hệ thống đường ống, hãy xác định thời gian tập kết tương ứng với từng đoạn đường trục.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên .
- dòng tiếp theo, dòng thứ chứa hai số nguyên (, ) xác định đoạn đường ống thứ nối hai trạm (không có hai đoạn đường ống nào cùng nối hai trạm điều áp).
Dữ liệu ra
- Dòng đầu ghi số nguyên là số đường trục có trong mạng.
- dòng sau, mỗi dòng ghi hai số nguyên , trong đó là số thứ tự của đoạn đường trục, là thời gian tập kết của hai robot đến hai trạm là hai đầu của đoạn đường trục ; nếu không có phương án di chuyển hai robot thì . Các dòng được đưa ra theo trật tự tăng của .
Ràng buộc
- , .
- Hệ thống liên thông, không có hai đoạn đường ống nối cùng một cặp trạm và có ít nhất một đoạn đường trục.
Subtasks
- Các test ứng với số điểm có .
- Các test còn lại ứng với số điểm có và .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 1 2 2 3 3 4 |
3 1 2 2 1 3 2 |
Cả ba đoạn đều là trục. Đoạn (nối trạm và ): robot thứ nhất đi , robot thứ hai đi , . Đoạn : sau đơn vị thời gian hai robot ở trạm và . Đoạn : robot thứ hai không được đứng yên ở trạm , nó đi trong khi robot thứ nhất đi , . |
| 7 8 1 2 1 3 1 4 2 3 4 5 4 7 5 6 6 7 |
1 3 3 |
Chỉ có đoạn (nối trạm và ) là trục. Robot thứ nhất đi vòng , robot thứ hai đi , . |
| 3 2 1 2 2 3 |
2 1 -1 2 -1 |
Ví dụ bổ sung. Sau mỗi đơn vị thời gian, hai robot luôn cùng ở trạm hoặc cùng ở các trạm , nên không bao giờ đứng ở hai đầu của một đoạn ống. |
| 2 1 2 1 |
1 1 0 |
Ví dụ bổ sung. Ngay từ đầu hai robot đã đứng ở hai đầu của đoạn đường trục duy nhất, . |
Bình luận