bài giải MTNTRAI spoj THPTCBT – 21697. Nông Trại

các bạn có thể nộp bài trên hệ thống SPOJ THPTCBT tại đây: http://www.spoj.com/THPTCBT/problems/MTNTRAI/

1. Đề bài MTNTRAI spoj

Trong trại chăn nuôi của John có nuôi một số con gà. Trong khi John đang ngủ say, những con cáo đói đã vào trại và tấn công đàn gà.

Trại có dạng hình chữ nhật gồm các ô được đánh số bởi hàng và cột. Mỗi ô chứa một kí tự : kí tự “.” là ô trống, kí tự „#‟ là hàng rào, kí tự “c” là gà, kí tự “f” là cáo. Chúng ta coi 2 ô là cùng một chuồng nếu có thể di chuyển từ ô nọ sang ô kia bằng đường đi chỉ gồm các đường theo hàng ngang hoặc thẳng đứng mà không bị vướng vào hàng rào. May thay, những con gà cũng biết tự vệ. Chúng có thể mổ chết những con cáo trong chuồng nếu số lượng gà lớn hơn số lượng cáo trong cùng chuồng. Ngược lại, những con cáo sẽ ăn hết gà trong chuồng đó.

Ban đầu, các con gà và các con cáo đã được xác định trong các miền của trại. Viết chương

trình tính số lượng gà và số lượng cáo còn lại vào sáng hôm sau

 

Input

– Dòng đầu chứa 2 số nguyên dương m, n là số hàng và số cột của trại (m,n<=1000)

– m dòng tiếp theo, dòng i chứa n kí tự, ký tự thứ j là ký hiệu của ô (i,j) trong trại.

Output

– gồm một dòng duy nhất lần lượt là số cáo và số gà còn lại trong trại.

Example

Input:
8 8
.#######
#..c…#
#.####.#
#.#f.#.#
#.#.c#c#
#c.##..#
#.f..f.#
.######.
Output:
1 3

2. Thuật toán MTNTRAI spoj

Bạn có thể dùng thuật toán BFS hoặc DFS, để duyệt qua các ô liên thông nhau (có thể đi được). trong mỗi vùng liên đó hãy đếm số cáo và gà, cập nhật kết quả bài toán. thực hiện cho đến khi không còn vùng liên thông nào có thể đi chưa duyệt cả.

3. Code tham khảo MTNTRAI spoj

Bạn có thể tham khảo 2 code dưới đây:

code 2:

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *