Problem1773--细胞

1773: 细胞

Time Limit: 1.000 Sec  Memory Limit: 128 MB
Submit: 514  Solved: 236
[Submit] [Status] [Web Board] [Creator:]

Description

一矩形阵列由数字09组成,数字19代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如阵列:
0234500067103456050020456006710000000089
4个细胞。

Input

整数m,n(m行,n)矩阵

Output

细胞的个数。

Sample Input

4 10
0234500067
1034560500
2045600671
0000000089

Sample Output

4

HINT

#include<bits/stdc++.h>
using namespace std;
int qx[100005],qy[100005],ans,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},n,m;
char a[10005][10005];
void bfs(int b,int p){
int l=0,t=1;
    qx[1]=b;
    qy[1]=p;
    a[b][p]='0';
    while(t>l){
        l++;
        for(int i=0;i<4;i++){
            int xx=qx[l]+dx[i],yy=qy[l]+dy[i];
            if(a[xx][yy]=='1'&&xx<=n&&xx>=1&&yy<=m&&yy>=1){
                a[xx][yy]='0';
                t+=1;
                qx[t]=xx;
                qy[t]=yy;
            }
        }
    }
    return;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j]!='0')
                a[i][j]='1';
        }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            if(a[i][j]=='1'){
            ans++;
                bfs(i,j);}
        }
    cout<<ans;
    return 0;
}


Source/Category


[Submit] [Status]