Red and Black

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12138    Accepted Submission(s):
7554

Problem Description
There is a rectangular room, covered with square tiles.
Each tile is colored either red or black. A man is standing on a black tile.
From a tile, he can move to one of four adjacent tiles. But he can't move on red
tiles, he can move only on black tiles.

Write a program to count the
number of black tiles which he can reach by repeating the moves described above.

 
Input
The input consists of multiple data sets. A data set
starts with a line containing two positive integers W and H; W and H are the
numbers of tiles in the x- and y- directions, respectively. W and H are not more
than 20.

There are H more lines in the data set, each of which includes W
characters. Each character represents the color of a tile as follows.

'.'
- a black tile
'#' - a red tile
'@' - a man on a black tile(appears
exactly once in a data set)

 
Output
For each data set, your program should output a line
which contains the number of tiles he can reach from the initial tile (including
itself).
 
Sample Input
 
Sample Output
45
59
6
13
 #include <iostream>
#include <cstdio>
using namespace std;
char a[][];
int m,n;
int count=;
void dfs(int x,int y)
{
if(a[x][y]=='.'&&x<n&&x>=&&y<m&&y>=)
{
count++;
a[x][y]='#';
dfs(x+,y);
dfs(x,y+);
dfs(x,y-);
dfs(x-,y);
}
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%d%d",&m,&n)&&m!=&&n!=)
{
count=;
int i,j,x,y;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
cin>>a[i][j];
if(a[i][j]=='@')
{
x=i;y=j;
}
}
}
a[x][y]='.';
dfs(x,y);
cout<<count<<endl;
}
}
 
 

最新文章

  1. .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
  2. vim 编辑
  3. MS SQL 两种分页
  4. Svn + tomcat + Hudson持续集成部署
  5. R语言学习笔记-变量的作用域
  6. python flask model 序列化
  7. Python 将文本转换成html的简单示例
  8. EL表达式及其定义和使用 转
  9. The Managed Metadata Service or Connection is currently not available
  10. ASP.NET MVC 中将FormCollection与实体间转换方法【转】
  11. FLAG_ACTIVITY_NEW_TASK和SingleInstance的设计思路(多task的应用)
  12. Apache OFBiz源码解读之MVC模型
  13. kali中的webshell
  14. MongoDB Driver 简单的CURD
  15. 使用localStorage保存搜索记录
  16. C语言小笔记
  17. 小L的试卷
  18. ionic3 git 提交报错
  19. TCP/IP协议网络编程以及UDP和TCP之传输协议
  20. Buaaclubs的NABC与发布

热门文章

  1. python运维开发(二十三)---tornado框架
  2. js 图片无缝循环
  3. backboneJS 使用心得(2)view和model事件的多次绑定(转载)
  4. unzip解压中文文件名乱码
  5. TEA encryption with 128bit key
  6. JS扩展方法
  7. scheme I/0 输入输出操作
  8. XML文档形式&amp;JAVA抽象类和接口的区别&amp;拦截器过滤器区别
  9. LeeCode-Two Sum
  10. LeeCode-Invert Binary Tree