| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
一A。。。BFS#include <cstdio>
#include <queue>
#include <algorithm>
#define WATER 'W'
#define LAND '.'
#define MAX_N 110
#define MAX_M 110
using namespace std;
typedef pair<int,int> P;
queue<P> que;
int map[MAX_N][MAX_M],N,M,ch;
bool inmap(int x,int y){return x > 0 && y > 0 && x <= N && y <= M;}
void bfs(P point){
que.push(point);
while(!que.empty()){
P p = que.front();que.pop();
for(int dx = -1;dx <= 1;++dx){
for(int dy = -1;dy <= 1;++dy){
int x = p.first + dx,y = p.second + dy;
if(inmap(x,y) && map[x][y]){
map[x][y] = 0;
que.push(make_pair(x,y));
}
}
}
}
}
int main(){
scanf("%d%d",&N,&M);
getchar();
for(int i = 1;i <= N;++i){
for(int j = 1;j <= M;++j){
ch = getchar();
if(ch == WATER){map[i][j] = 1;}
else{map[i][j] = 0;}
}
getchar();
}
int ans = 0;
for(int i = 1;i <= N;++i){
for(int j = 1;j <= M;++j){
if(map[i][j]){
bfs(make_pair(i,j));
++ans;
}
}
}
printf("%d\n",ans);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator