trang chủ / đề bài / dhbb13_mrobot

Di chuyển robot

Đề bài

Mô tả

Hệ thống đường ống dẫn dầu có N trạm điều áp, đánh số từ 1 đến N và M đoạn đường ống, đánh số từ 1 đến M, 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 1, robot thứ hai đặt ở trạm N. 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 1, robot thứ hai xuất phát từ trạm N 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ố T≥0 nhỏ nhất sao cho sau đúng T đơ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 1 với trạm N) thì T=0.

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 N,M.
  • M dòng tiếp theo, dòng thứ i chứa hai số nguyên ui,vi (1≤ui,vi≤N, ui≠vi) xác định đoạn đường ống thứ i nối hai trạm ui,vi (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 K là số đường trục có trong mạng.
  • K dòng sau, mỗi dòng ghi hai số nguyên U,T, trong đó U là số thứ tự của đoạn đường trục, T 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 U; nếu không có phương án di chuyển hai robot thì T=−1. Các dòng được đưa ra theo trật tự tăng của U.

Ràng buộc

  • 2≤N≤105, N−1≤M≤106.
  • 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 50% số điểm có 2≤N≤100.
  • Các test còn lại ứng với 50% số điểm có 2≤N≤105 và N−1≤M≤106.

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 1 (nối trạm 1 và 2): robot thứ nhất đi 1→2→1, robot thứ hai đi 4→3→2, T=2. Đoạn 2: sau 1 đơn vị thời gian hai robot ở trạm 2 và 3. Đoạn 3: robot thứ hai không được đứng yên ở trạm 4, nó đi 4→3→4 trong khi robot thứ nhất đi 1→2→3, T=2.
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 3 (nối trạm 1 và 4) là trục. Robot thứ nhất đi vòng 1→2→3→1, robot thứ hai đi 7→6→5→4, T=3.
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 2 hoặc cùng ở các trạm 1,3, 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, T=0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0