fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FR0(i,N) for(i=0;i<(N);i++)
  4. #define FR1(i,N) for(i=1;i<=(N);i++)
  5. #define FRN(i,k,N) for(i=k;i<(N);i++)
  6. #define pf printf
  7. #define db double
  8. #define max3(a,b,c) max(max(a,b),c)
  9. #define min3(a,b,c) min(min(a,b),c)
  10. #define sci(n) scanf("%d",&n)
  11. #define scl(n) scanf("%lld",&n)
  12. #define scf(n) scanf("%f",&n)
  13. #define scd(n) scanf("%lf",&n)
  14. #define scs(s) scanf("%s",&s)
  15. #define scll(n) scanf("%%I64d",&n)
  16. #define PI acos(-1.0)
  17. #define LL long long
  18. #define MX 1000005
  19. #define MOD 1000000007
  20. typedef long long int ll;
  21. bool status[1100002];
  22. int dr[]= {-1,-1,-1,0,0,1,1,1};
  23. int dc[]= {-1,0,1,-1,1,-1,0,1};
  24. queue<int>Q;
  25. char mat[250][250];
  26. int visit[250][250],n,m;
  27. int BFS(int r,int c)
  28. {
  29. visit[r][c]=1;
  30. Q.push(r);
  31. Q.push(c);
  32. int p=0,q=0;
  33. while(!Q.empty())
  34. {
  35. int u=Q.front();
  36. Q.pop();
  37. int v=Q.front();
  38. Q.pop();
  39. for(int i=0; i<8; i++)
  40. {
  41. int row =dr[i]+u;
  42. int col=dc[i]+v;
  43. if(row>=1 && row<=n && col>=1 && col<=m && mat[row][col]=='*')
  44. {
  45. if(visit[row][col]==0)
  46. {
  47. visit[row][col]=1;
  48. q++;
  49. Q.push(row);
  50. Q.push(col);
  51. }
  52. }
  53. }
  54. }
  55. if(q==0)
  56. {
  57. p++;
  58. }
  59. return p;
  60. }
  61. int main()
  62. {
  63. int cnt;
  64. while(scanf("%d%d",&n,&m))
  65. {
  66. if(n==0 && m==0) break;
  67. getchar();
  68. for(int i=1; i<=n; i++)
  69. {
  70. for(int j=1; j<=m; j++)
  71. {
  72. cin>>mat[i][j];
  73. }
  74. }
  75. cnt=0;
  76. //memset(visit,0,sizeof(visit));
  77. //memset(mat,'\0',sizeof(mat));
  78. for(int i=1; i<=n; i++)
  79. {
  80. for(int j=1; j<=m; j++)
  81. {
  82. if(mat[i][j]=='*' && visit[i][j]==0)
  83. {
  84. cnt+=BFS(i,j);
  85. }
  86. }
  87. }
  88. //cout<<cnt<<endl;
  89. pf("%d\n",cnt);
  90. memset(visit,0,sizeof(visit));
  91. memset(mat,'\0',sizeof(mat));
  92. }
  93. }
  94.  
Success #stdin #stdout 0s 4800KB
stdin
5 5
.....
....*
....*
...*.
*....
4 3
...
.*.
...
*.*
0 0
stdout
1
3