Một khu bảo tồn động vật có n địa điểm và các đường đi hai chiều nối các địa điểm đó, địa điểm thứ
i có nhiệt độ là ti, giữa hai địa điểm bất kỳ có nhiều nhất là một đường đi nối chúng.
Người ta muốn di chuyển một loài động vật quý hiếm từđịa điểm A tới địa điểm B, tuy nhiên nếu chênh lệch về nhiệt độ giữa hai địa điểm liên tiếp trên đường đi là quá cao thì loài động vật này rất có thể bị chết.
Yêu cầu: Hãy chỉ ra một hành trình mà độ lệch nhiệt độ lớn nhất giữa hai địa điểm liên tiếp bất kỳ trên đường đi là cực tiểu.
Dữ liệu: Vào từ file văn bản MOVE.INP
• Dòng 1: Chứa ba số n, A, B (2 ≤ n ≤ 200; A ≠ B)
• Dòng 2: Chứa n số tự nhiên t1, t2, ..., tn (∀i: 0 ≤ ti≤ 20000)
• Các dòng tiếp theo, mỗi dòng chứa hai số nguyên dương u, v cho biết giữa hai địa điểm u và v có đường đi nối chúng.
Kết quả: Ghi ra file văn bản MOVE.OUT
• Dòng 1: Ghi độ lệch nhiệt độ lớn nhất giữa hai địa điểm liên tiếp bất kỳ trên đường đi tìm được, nếu không tồn tại đường đi thì dòng này ghi số -1.
• Trong trường hợp tìm được đường đi thì dòng 2 ghi hành trình tìm được, bắt đầu từđịa điểm A, tiếp theo là những địa điểm đi qua, kết thúc là địa điểm B. Các địa điểm phải được liệt kê theo
đúng thứ tựđi qua trên hành trình
Các số trên một dòng của Input/ Output file được ghi cách nhau ít nhất một dấu cách.
Ví dụ: MOVE.INP MOVE.OUT 7 1 4 20 22 29 30 24 27 26 1 2 1 3 1 4 2 4 2 5 3 4 3 6 4 5 4 6 5 7 6 7 2 1 2 5 7 6 3 4 1 2 5 3 6 7 4 20 22 24 26 27 29 30
048. PHÁ TƯỜNG
Có một toà lâu đài hình chữ nhật với hai cạnh là m, n nguyên dương không lớn hơn 50. Lâu đài
được chia thành các ô vuông đơn vị. Các dòng ô vuông được đánh số từ 1 tới m từ trên xuống dưới, trên mỗi dòng, các ô được đánh số theo thứ tự từ 1 tới n từ trái qua phải. Quanh mỗi ô có thể có từ 0 tới 4 bức tường, tuy nhiên tình trạng có tường tại các ô kề cạnh là không mâu thuẫn nhau.
Để thể hiện tình trạng tường quanh một ô, ta gán cho mỗi ô một số nguyên, mà trong biểu diễn nhị
phân của số nguyên đó:
• Bít 0 (Bít đơn vị) bằng 1 hay 0 tuỳ theo ô đó có tường hay không có tường hướng Tây • Bít 1 bằng 1 hay 0 tuỳ theo ô đó có tường hay không có tường hướng Bắc
• Bít 2 bằng 1 hay 0 tuỳ theo ô đó có tường hay không có tường hướng Đông • Bít 3 bằng 1 hay 0 tuỳ theo ô đó có tường hay không có tường hướng Nam Quanh lâu đài có tường bao bọc.
Ví dụ trong hình vẽ dưới, ta có một lâu đài 4 x 7.
Tình trạng tường của ô (2, 2) được thể hiện bởi số 9 = 1001 Tình trạng tường của ô (3, 5) được thể hiện bởi số 13 = 1101 1 2 3 4 5 6 7 1 2 9 3 13 4
Lâu đài được chia thành các phòng, các phòng phân cách nhau bởi các bức tường. Hãy lập chương trình trả lời các câu hỏi sau:
1. Cho biết lâu đài có bao nhiêu phòng 2. Cho biết số ô của phòng rộng nhất
3. Hãy tìm cách phá đi một và chỉ một bức tường đểđược một phòng rộng nhất có thể
Dữ liệu: Vào từ file văn bản DWALL.INP • Dòng 1: Ghi hai số m, n
• m dòng tiếp theo, dòng thứ i ghi n số nguyên, số thứ j thể hiện tình trạng tường quanh ô (i, j)
Kết quả: Ghi ra file văn bản DWALL.OUT • Dòng 1: Ghi số phòng
• Dòng 2: Ghi số ô của phòng rộng nhất
• Dòng 3: Ghi hai số P, Q và ký tự c ∈ {W, N, E, S} với ý nghĩa phá tường ở hướng c của ô (P, Q)
• Dòng 4: Ghi s ô c a phòng r ng nh t thu c sau khi phá t ng
E W W
N