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à q cao thì lồ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 tồ 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ố ngun đó:
• 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 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