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 đó.
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ố ngun 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: Ln 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 ơ vng đơ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 tồn (khơng có thú dữ)
• "&": Địa điểm an tồn có một con ngựa đang đứng • "*": Địa điểm an tồ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 ngồ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