Cho một đồ thị có hướng G gồm n đỉnh và m cung, hai con Rô-bốt đứng tại hai đỉnh nào đó.
Yêu cầu:
Chuyển nhanh nhất hai con Rô-bốt đến gặp nhau tại một đỉnh của đồ thị, biết rằng cả hai con Rô-bốt chỉđược chạy theo các cung định hướng và không được dừng lại cho tới lúc gặp nhau tại một đỉnh nào đó. Thời gian Rô-bốt đi qua một cung bất kỳ luôn là 1 đơn vị thời gian
Dữ liệu: Vào từ file văn bản RMOVE.INP
• Dòng 1: chứa 4 số nguyên dương n, m, A, B. Ởđây A và B lần lượt là vị trí của con rô-bốt thứ
nhất và vị trí của con rô-bốt thứ hai, 2 ≤ n ≤ 250, 1 ≤ m ≤ 60000.
• m dòng tiếp theo, mỗi dòng chứa hai số u, v tương ứng với một cung (u, v) của đồ thị
Kết quả: Ghi ra file văn bản RMOVE.OUT
• Dòng 1: Ghi thời gian tính từ lúc bắt đầu di chuyển cho tới lúc hai rô-bốt gặp nhau
• Dòng 2: Ghi hành trình của con rô-bốt thứ nhất, theo đúng thứ tự từđỉnh A tới đỉnh gặp nhau • Dòng 3: Ghi hành trình của con rô-bốt thứ hai, theo đúng thứ tự từđỉnh B tới đỉnh gặp nhau
Các số trên một dòng của Input/Output file cách nhau ít nhất một dấu cách
Ràng buộc: Luôn có phương án thực hiện yêu cầu trên
Giới hạn : Chương trình chạy trên Turbo Pascal.
Ví dụ: RMOVE.INP RMOVE.OUT 4 5 1 2 1 2 2 1 2 4 3 2 4 3 3 1 2 1 2 2 4 3 2 2 1 4 3
139. TRẠM NGHỈ
Một toán kỵ sĩ bỏ ngựa đi thám hiểm một khu rừng và đến khi trời tối, họ muốn đi về những trạm nghỉ. Rất may là các kỵ sĩđều có bản đồ khu rừng trong tay, nhờđó có thể xác định chính xác vị trí của họ, các trạm nghỉ, các khu vực có thú dữ và tất nhiên cả vị trí của các con ngựa (nơi họđã bỏ
lại).
Mỗi kỵ sĩ sẽ phải chọn cho mình một con ngựa, một trạm nghỉ và dùng còi siêu âm gọi con ngựa đó về trạm nghỉđã chọn. Mỗi trạm nghỉ chỉđủ chỗ cho một kỵ sĩ và một con ngựa.
Giả sử rằng có m trạm nghỉ, n kỵ sĩ, n con ngựa và bạn là một trong số những kỵ sĩđó. Hãy vạch ra hành trình cho các kỵ sĩ và các con ngựa để thời gian tính từ lúc bắt đầu cho tới khi tất cả các con ngựa và các kỵ sĩ về tới trạm nghỉ tương ứng là nhỏ nhất.
Bản đồ khu rừng được mã hoá bằng một lưới ô vuông đơn vị kích thước pxq. Trên mỗi ô ghi một trong 5 ký hiệu:
• "%": Địa điểm có thú dữ
• ".": Địa điểm an toàn (không có thú dữ)
• "&": Địa điểm an toàn có một con ngựa đang đứng • "*": Địa điểm an toàn có một kỵ sĩđang đứng • "@": Trạm nghỉ
Với 1 đơn vị thời gian, mỗi kỵ sĩ và mỗi con ngựa có thể thực hiện một bước đi. Nhìn trên bản đồ, mỗi bước đi của một kỵ sĩ là một phép di chuyển từ ô đang đứng sang một trong các ô kề cạnh, bước đi này được mã hoá bằng một trong 4 ký hiệu {E, W, S, N}. Mỗi bước đi của một con ngựa là một phép di chuyển như một nước đi của quân mã theo luật cờ, bước đi này được mã hoá bằng một trong 8 ký hiệu {1, 2, 3, 4, 5, 6, 7, 8}. Các kỵ sĩ cũng như các con ngựa không được đi tới ô có thú dữ hay đi ra ngoài bản đồ. Các ký hiệu tương ứng với các hướng đi được chỉ ra trong hình dưới đây:
6 7
N 5 8
W * E &
S 4 1
3 2
Dữ liệu: Vào từ file văn bản HORSEMAN.INP
• Dòng đầu tiên: Chứa hai số p, q cách nhau 1 dấu cách
• p dòng tiếp theo, dòng thứ i chứa q ký tự, ký tự thứ j là ký hiệu ghi trên ô (i, j) của bản đồ
Kết quả: Ghi ra file văn bản HORSEMAN.OUT
• Dòng đầu tiên: Ghi thời gian nhanh nhất để tất cả các kỵ sĩ và các con ngựa về tới trạm nghỉ tương ứng
• 2n dòng tiếp theo, cứ hai dòng ghi hành trình của một kỵ sĩ:
♦ Dòng 1: Ghi hai số x, y cách nhau một dấu cách là vị trí ô (x, y) của một kỵ sĩ
Ví dụ:
( Kết quả file Output này sai ! ) Đáp án tối ưu phải là 3 mới đúng !
HORSEMAN.INP HORSEMAN.OUT 5 6 5 6 .&&.*. .%%... @@.@.@ &... *...*. 4 1 5 SSW 5 1 NN 5 5 NNE 1 2 3 1 3 2 4 1 1727