洛谷 P1451 求细胞数量
2019-06-03
题目: 洛谷 P1451 求细胞数量: https://www.luogu.org/problemnew/show/P1451
题目描述
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?
输入输出格式
输入格式:输入:整数m,n(m行,n列)
矩阵
输出格式:输出:细胞的个数
输入输出样例
输入样例#1:
4 10 0234500067 1034560500 2045600671 0000000089
输出样例#1:
ios::sync_with_stdio(0),cin.tie(0);大家都知道这句话可以增快cin,cout的速度。
4
ios::sync_with_stdio(0),cin.tie(0);大家都知道这句话可以增快cin,cout的速度。
但此时需要特别注意:
ios::sync_with_stdio(0),使用本行代码时cin与scanf不能混用!!否则会有奇怪的错误。
cin.tie(0),使cin与cout的绑定接触,所以cout可以正常使用。
%*d 输入*位数字。
1 // 2 #include <bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 #define ri register ll 6 7 ll m,n,tot; 8 ll a[105][105]; 9 bool vis[105][105]; 10 ll wayx[]={1,-1,0,0}; 11 ll wayy[]={0,0,1,-1}; 12 13 void dfs(ll x,ll y) 14 { 15 vis[x][y]=1; 16 17 // cout<<x<<" "<<y<<" -- "<<tot<<'\n'; 18 for(ri i=0;i<4;i++) 19 { 20 ri xx=x+wayx[i],yy=y+wayy[i]; 21 if(xx<1 || xx>m || yy<1 || yy>n)continue; 22 if(vis[xx][yy] || !a[xx][yy])continue; 23 dfs(xx,yy); 24 } 25 return; 26 } 27 28 signed main() 29 { 30 //ios::sync_with_stdio(0),cin.tie(0); 31 //cin>>m>>n; 32 scanf("%lld%lld",&m,&n); 33 for(ri i=1;i<=m;i++) 34 { 35 for(ri j=1;j<=n;j++) 36 { 37 scanf("%1lld",&a[i][j]); 38 } 39 } 40 for(ri i=1;i<=m;i++) 41 { 42 for(ri j=1;j<=n;j++) 43 { 44 if(vis[i][j] || !a[i][j])continue; 45 dfs(i,j); 46 tot++; 47 } 48 } 49 cout<<tot<<'\n'; 50 return 0; 51 } 52 //