Advertisement
farsid

Untitled

Mar 11th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include<iostream>
  2. #include<queue>
  3. #include<stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. struct Node
  8. {
  9. int r,c;
  10.  
  11. };
  12.  
  13.  
  14.  
  15. queue<Node>Q;
  16.  
  17.  
  18. bool vst[107][107];
  19.  
  20. int dx[]={0,0,1,1,1,-1,-1,-1};
  21. int dy[]={1,-1,0,1,-1,0,1,-1};
  22.  
  23. char Grid[107][107];
  24.  
  25. int Bfs(Node S)
  26. {
  27. int i;
  28. vst[S.r][S.c]=1;
  29.  
  30.  
  31. Q.push(S);
  32.  
  33. Node u,v;
  34.  
  35. while(!Q.empty())
  36. {
  37. u=Q.front();
  38. Q.pop();
  39.  
  40. for(i=0;i<8;i++)
  41. {
  42. v=u;
  43. v.r+=dx[i];
  44. v.c+=dy[i];
  45.  
  46. if(Grid[v.r][v.c]!='@')continue;
  47.  
  48. if(!vst[v.r][v.c])
  49. {
  50. Q.push(v);
  51. vst[v.r][v.c]=1;
  52. }
  53. }
  54. }
  55.  
  56. }
  57.  
  58.  
  59. int main()
  60. {
  61. int m,n,i,j;
  62. while(scanf("%d%d",&m,&n)==2)
  63. {
  64. if(!m &&!n)break;
  65. for(i=1;i<=m;i++)
  66. {
  67. scanf("%s",Grid[i]+1);
  68. // printf("%s\n",Grid[i]+1);
  69.  
  70. }
  71.  
  72.  
  73. int ans=0;
  74.  
  75.  
  76.  
  77.  
  78.  
  79. for(i=1;i<=m;i++)
  80. {
  81. for(j=1;j<=n;j++)
  82. {
  83. if(!vst[i][j]&&Grid[i][j]=='@')
  84. {
  85. Node S;
  86. S.r=i;
  87. S.c=j;
  88.  
  89.  
  90. Bfs(S);
  91.  
  92. ans++;
  93.  
  94. }
  95. }
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102. printf("%d\n",ans);
  103.  
  104.  
  105. ///
  106.  
  107. for(i=1;i<=m;i++)
  108. {
  109. for(j=1;j<=n;j++)
  110. {
  111. vst[i][j]=Grid[i][j]=0;
  112. }
  113. }
  114.  
  115. ///
  116.  
  117.  
  118. }
  119.  
  120.  
  121. return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement