luogu P1451 求細胞數量
阿新 • • 發佈:2017-06-27
getchar() scan style tchar 輸出 space pty ons pla
P1451 求細胞數量
題目描述
一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。(1<=m,n<=100)?
輸入輸出格式
輸入格式:
輸入:整數m,n(m行,n列)
矩陣
輸出格式:
輸出:細胞的個數
輸入輸出樣例
輸入樣例#1:4 10 0234500067 1034560500 2045600671 0000000089輸出樣例#1:
4
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<string> #include<queue> using namespace std; const int N=101; const int xd[]={0,-1,0,1}; const int yd[]={-1,0,1,0}; struct node{ int x,y; }now,top,nxt; int a[N][N]; bool vis[N][N]; int answer; int n,m; queue<node>q; inline int read() {int x=0;char c=getchar(); while(c<‘0‘||c>‘9‘)c=getchar(); return x=c-‘0‘; } inline void bfs(int x,int y) { answer++; now.x=x; now.y=y; q.push(now); vis[x][y]=1; while(!q.empty()) { top=q.front(); q.pop(); for(int i=0;i<4;i++) {int xx=xd[i]+top.x; int yy=yd[i]+top.y; if(a[xx][yy]&&xx>0&&xx<=n&&yy>0&&yy<=m) { a[xx][yy]=0; nxt.x=xx; nxt.y=yy; q.push(nxt); } } } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) a[i][j]=read(); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]) bfs(i,j); printf("%d",answer); return 0; }
luogu P1451 求細胞數量