标签:std lang mis nod pst color cat empty 入队
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 34862 | Accepted: 18856 |
Description
Input
Output
Sample Input
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 11 9 .#......... .#.#######. .#.#.....#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#.......#. .#########. ........... 11 6 ..#..#..#.. ..#..#..#.. ..#..#..### ..#..#..#@. ..#..#..#.. ..#..#..#.. 7 7 ..#.#.. ..#.#.. ###.### ...@... ###.### ..#.#.. ..#.#.. 0 0
Sample Output
45 59 6 13
Source
#include <stdio.h> #include <math.h> #include <iostream> #include <string.h> #include <queue> #define maxn 105 using namespace std; int n,m,num,vis[maxn][maxn]; int dx[]={1,-1,0,0},dy[]={0,0,1,-1}; char mapn[maxn][maxn]; struct node { int x,y; }; void bfs(int a,int b) { queue<node> q; node p; p.x = a; p.y = b; num++; vis[a][b] = 1; q.push(p); while(!q.empty())//加入队列的都是可以走到的点,所以只需ans++即可 { node now = q.front(); int x = now.x,y = now.y; q.pop(); for(int i=0;i<4;i++) { int xx = x + dx[i]; int yy = y + dy[i]; if(xx<0||yy<0||xx>(n-1)||yy>(m-1)||mapn[xx][yy]==‘#‘||vis[xx][yy]) continue; num++; node tmp; tmp.x = xx; tmp.y = yy; q.push(tmp); vis[xx][yy] = 1; } } } int main() { while(cin >> m >> n)//注意这里输入的是m,n { memset(vis,0,sizeof(vis)); num = 0; if(n==0||m==0) break; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin >> mapn[i][j]; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(mapn[i][j]==‘@‘) bfs(i,j); } cout << num << endl; } }
标签:std lang mis nod pst color cat empty 入队
原文地址:http://www.cnblogs.com/l609929321/p/6696580.html