HDU_1312_Red and Black
来源:互联网 发布:手机怎么查看淘宝物流 编辑:程序博客网 时间:2024/06/05 11:54
Red and Black
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12866 Accepted Submission(s): 7960
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.
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)
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
6 9....#......#..............................#@...#.#..#.11 9.#..........#.#######..#.#.....#..#.#.###.#..#.#..@#.#..#.#####.#..#.......#..#########............11 6..#..#..#....#..#..#....#..#..###..#..#..#@...#..#..#....#..#..#..7 7..#.#....#.#..###.###...@...###.###..#.#....#.#..0 0
Sample Output
4559613简单的bfs#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;char a[22][22];int vis[22][22];int dx[4]={-1,1,0,0};int dy[4]={0,0,-1,1};struct node{ int x,y;}cur,nex;queue<node> qu;int bfs(node sta,int w,int h){ //cout<<sta.x<<" "<<sta.y; int cnt=0,nx,ny; qu.push(sta);cnt++; node p,n; while(!qu.empty()) { //cout<<"ok"; n=qu.front(); qu.pop(); for(int i=0;i<4;i++) { nx=n.x+dx[i]; ny=n.y+dy[i]; if(nx>=0 && nx<h && ny>=0&&ny<w && vis[nx][ny]==0 && a[nx][ny]=='.') { p.x=nx; p.y=ny; vis[p.x][p.y]=1; qu.push(p); //cout<<"ok"; cnt++; } } } return cnt;}int main(){ int w,h; while(scanf("%d%d",&w,&h)!=EOF&&w&&h) { node sta; memset(vis,0,sizeof(vis)); for(int i=0;i<h;i++) scanf("%s",a[i]); //把起点的位置找到 for(int i=0;i<h;i++) for(int j=0;j<w;j++) if(a[i][j]=='@') { sta.x=i,sta.y=j; break; } vis[sta.x][sta.y]=1; //cout<<"ok"; /*for(int i=1;i<=h;i++) for(int j=1;j<=w;j++) { printf("%c ",a[i][j]); cout<<endl; }*/ printf("%d\n",bfs(sta,w,h)); } return 0;}
0 0
- hdu_1312_Red and Black
- HDU_1312_Red and Black
- Red and Black
- red and black
- POJ_1979_Red and Black
- poj1979Red and Black
- Black Berry and IPhone
- HDUOJ1312 Red and Black
- Red and Black
- red and black
- Red and Black
- HDOJ Red and Black
- HDU1312( Red and Black )
- Red and Black
- hdu1312 Red and Black
- 深搜:Red and Black
- Black And White
- BIT1038Red and Black
- Ext.data.Store
- 经典算法题每日演练——第十五题 并查集
- this指针
- 【Cocos2d-x】CCAction
- How to Improve Communication Skills
- HDU_1312_Red and Black
- UVA 1600 - Patrol Robot( BFS & DFS)
- linux ssh 免密码登陆
- 软交换FreeSWITCH系统概要和源代码分析预备知识
- 经典算法题每日演练——第十六题 Kruskal算法
- 重装谷歌浏览器后无法登陆,登陆后无法同步书签
- 适配器 设计模式
- hdu 1754 I Hate It(线段树/树状数组)
- git revert远程常见操作