Walls Bài toán Ở một đất nước, các bức tường thành được xây dựng sao cho mỗi bức tường sẽ nối hai thành phố.. Do đó, đất nước này được chia thành các vùng mà khi đi từ vùng này sang
Trang 15 Walls
Bài toán
Ở một đất nước, các bức tường thành được xây dựng sao cho mỗi bức tường sẽ nối hai thành phố Các bức tường thành không cắt lẫn nhau Do đó, đất nước này được chia thành các vùng mà khi
đi từ vùng này sang vùng khác thì phải đi qua một thành phố hoặc đi ngang qua tường thành Với
2 thành phố bất kỳ A và B, có nhiều nhất một bức tường thành với một đầu ở thành phố A và một đầu ở thành phố B và hơn nữa, có thể đi từ A đến B bằng cách đi qua một thành phố hoặc đi dọc theo một bức tường thành
Có một câu lạc bộ mà các thành viên của nó sống trong các thành phố Trong mỗi thành phố có thể có ít nhất một hoặc không có thành viên nào sống Các thành viên muốn gặp nhau ở một trong các vùng (bên ngoài các thành phố) Các thành viên đi bằng xe đạp Họ không muốn vào các thành phố vì tình hình giao thông và họ muốn đi qua số bức tường thành ít nhất Để đến chỗ gặp nhau, mỗi thành viên cần phải đi qua một số bức tường thành Họ muốn tìm một vùng phù hợp nhất với tổng số lần đi qua tường thành là nhỏ nhất
Các thành phố được đánh số từ 1 đến N trong đó N là số thành phố Trong hình 1, các nút được
đặt tên chỉ các thành phố và các đường nối các nút là các bức tường thành Giả sử có ba thành viên sống trong các thành phố 3, 6 và 9 Vùng phù hợp nhất để hội họp và các lộ trình tương ứng cho các thành viên được minh họa trong hình 2 Tổng số lần đi qua tường thành là 2: thành viên
từ thành phố số 9 phải đi qua tường thành giữa thành phố 2 và 4, và thành viên từ thành phố 6 phải đi qua tường thành giữa thành phố 4 và 7
Hãy viết chương trình từ các thành phố, các vùng và thành phố quê hương của các thành viên câu lạc bộ, hãy xác định vùng phù hợp nhất cho hội họp với tổng số lần đi qua tường thành ít nhất
Input
Tệp input có tên WALLS.IN Dòng đầu tiên chứa 1 số nguyên chỉ số vùng M với 2<=M<=200 Dòng thứ hai chứa 1 số nguyên chỉ số thành phố N với 3<=N<=250 Dòng thứ ba chứa 1 số nguyên chỉ số thành viên câu lạc bộ L với 1<=L<=30, L<=N Dòng thứ tư chứa L số nguyên khác
nhau theo thứ tự tăng dần chỉ tên các thành phố có thành viên câu lạc bộ sống
Sau đó, tệp này chứa 2M dòng, mỗi cặp dòng tương ứng với 1 vùng: hai dòng đầu tiên trong số 2M dòng mô tả vùng đầu tiên, hai dòng đầu tiên mô tả vùng thứ hai, Trong mỗi cặp dòng, dòng thứ nhất chỉ số thành phố I xung quanh vùng đó Dòng thứ hai chứa I số nguyên chỉ tên của I
Page 1
Trang 2thứ nhất chỉ số thành phố I xung quanh vùng đó Dòng thứ hai chứa I số nguyên chỉ tên của I
thành phố theo thứ tự đi qua khi đi theo chiều kim đồng hồ dọc theo biên giới vùng với ngoại lệ sau Vùng cuối cùng là “vùng ngoài” bao quanh tất cảc các thành phố và các vùng khác, và thứ tự các thành phố theo hướng đi ngược chiều kim đồng hồ Thứ tự các vùng được gán theo số nguyên: vùng đầu tiên là 1, vùng thứ hai là 2, Chú ý, input chứa tất cả các vùng được tạo thành
từ các thành phố và tường thành gồm cả “vùng ngoài”
Output
Tệp output có tên là WALLS.OUT Dòng đầu tiên chứa 1 số nguyên chỉ số lần vượt qua ít nhất Dòng thứ hai chứa 1 số nguyên chỉ tên vùng phù hợp nhất cho hội họp Có nhiều giải pháp, chương tình chỉ cần báo cáo 1 giải pháp
Ví dụ
Input và Output
Tệp input và output tương ứng với ví dụ trên
Page 2