Problem F: 细胞

Problem F: 细胞

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 460  Solved: 214
[Submit] [Status] [Web Board] [Creator:]

Description

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)

Input

整数m,n(m行,n列)

Output

细胞的个数

Sample Input Copy

4  10
0234500067
1034560500
2045600671
0000000089

Sample Output Copy

4

HINT

#include<bits/stdc++.h>
using namespace std;
string s[105];
int vis[105][105];
int fx[4][4]={{1,0},{-1,0},{0,1},{0,-1}};
int m,n,ans=0;
int countt=0;
bool check(int x,int y)
{
if(x>=0 && x<m && y>=0 && y<n && s[x][y]-'0'!=0)return true;
return false;
}
void bfs(int x,int y)
{
queue<pair<int,int> >q;
q.push({x,y});
vis[x][y]=1;
while(!q.empty())
{
x=q.front().first,y=q.front().second;
for(int i=0;i<4;i++)
{
int xx=x+fx[i][0],yy=y+fx[i][1];
if(check(xx,yy)&&vis[xx][yy]==0)
{
q.push({xx,yy});
vis[xx][yy]=1;
}
}
q.pop();
}
}
signed main()
{
cin>>m>>n;
for(int i=0;i<m;i++)
{
cin>>s[i];
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(!vis[i][j] && s[i][j]-'0'!=0)
{
bfs(i,j);
ans++;
}
}
}
cout<<ans;
return 0;
}