(Đề thi Olympic sinh viên toàn quốc cho khối chuyên tin năm 1995)
Cho lới ô vuông kích thớc M x N (M,N < 20). Ngời ta đặt k con chuột tại k nút của lới, mỗi nút 1 con chuột. Mỗi con chuột sẽ và chỉ phải nhìn vào một con chuột khác ở khoảng cách gần nhất với nó. Kết quả là có thể sẽ có một số con chuột mà không có ai nhìn đến cả. Các con chuột này đợc gọi là đơn độc. Các nút của lới qui định đánh số là i, j theo hàng và cột của lới, vị trí trái trên đợc đánh số 1,1.
Hai trờng hợp sau có thể xảy ra: Trờng hợp A:
Với mỗi con chuột chỉ có thể có duy nhất một con chuột ở khoảng cách gần nhất. Trong trờng hợp này số lợng và vị trí các con chuột đơn độc đợc xác định một cách duy nhất.
Trờng hợp B:
Tồn tại con chuột mà khoảng cách đến hai (hoặc nhiều hơn) con gần nhất là bằng nhau. Trong trờng hợp này số lợng các con chuột đơn độc phụ thuộc vào cách chọn nhìn của các con chuột trên. Dữ liệu đợc đa vào từ một ma trận kích thớc M x N, tại vị trí nút có chuột đánh số 1, các vị trí còn lại ghi số 0. File dữ liệu có tên là INPUT.TXT và có dạng sau: Dòng đầu tiên ghi các giá trị M và N, M dòng tiếp theo mỗi dòng ghi N số 0 hoặc 1 cách nhau bởi dấu cách.
Ví dụ: 4 5 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1
Viết chơng trình thực hiện các công việc sau:
1) Xác định xem dữ liệu bài toán thuộc trờng hợp A hay B. Nếu là trờng hợp A, thực hiện tiếp câu (2), nếu là trờng hợp B, thực hiện tiếp câu (3).
2) Xác định số lợng và vị trí của các con chuột đơn độc. Kết quả thể hiện trong File OUTPUT2.TXT, dòng đầu tiên ghi số lợng, các dòng tiếp theo mỗi dòng ghi vị trí của các con chuột đơn độc (xác định bởi 2 tọa độ là hàng và cột của lới).
3) Xác định một phơng án nhìn của các con chuột sao cho số các con chuột đơn độc là nhỏ nhất. Kết quả thể hiện trong File sau đây:
File OUTPUT31.TXT ghi lại phơng án nhìn. Mỗi dòng ghi rõ vị trí chuột nhìn và vị trí chuột đợc nhìn cách nhau bởi dấu "—->".
Ví dụ: 2,1 —-> 3,2 4,1 —-> 3,2 1,3 —-> 1,4 . . .
File OUTPUT32.TXT ghi lại số lợng và vị trí các con chuột đơn độc. Cách ghi tơng tự File OUTPUT2.TXT.