poj 2386 Lake Counting

来源:互联网 发布:淘宝宝贝没有无线展现 编辑:程序博客网 时间:2024/06/10 01:22

找到W就从这儿开始广搜,把能连接的W赋成点,广搜到头后,

在找W,再广搜,看能广搜几次

#include<stdio.h>#include<queue>using namespace std;struct node{int x,y;};char map[100][100];int n,m;int dir[8][2]={-1,-1, 0,-1,  1,-1,  -1,0,  1,0,  -1,1,  0,1,  1,1};void bfs(int i,int j){int k;map[i][j]='.';queue<node>q;node cur,next;cur.x=i;cur.y=j;q.push(cur);while(!q.empty()){cur=q.front();q.pop();for(k=0;k<8;k++){next.x=cur.x+dir[k][0];//把k误写成i了next.y=cur.y+dir[k][1];if(next.x>=0&&next.x<m&&next.y>=0&&next.y<n){if(map[next.x][next.y]=='W'){map[next.x][next.y]='.';q.push(next);}}}}}int main(){int i,j,sum=0;scanf("%d%d",&m,&n);getchar();for(i=0;i<m;i++)gets(map[i]);for(i=0;i<m;i++)for(j=0;j<n;j++)if(map[i][j]=='W'){sum++;bfs(i,j);}printf("%d\n",sum);return 0;}