immuntasir

572

Feb 24th, 2015
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. char grid[100][100];
  7. int x[] = {1,1,1,0,0,-1,-1,-1};
  8. int y[] = {1,0,-1,1,-1,1,0,-1};
  9. bool didVisit[100][100];
  10. int row,column,cnt;
  11.  
  12. void operationTorchlight(int a,int b) {
  13.     didVisit[a][b] = 1;
  14.     int p,X,Y;
  15.     for (p=0;p<8;p++) {
  16.         X = a + x[p];
  17.         Y = b + y[p];
  18.         if (X>=0 && X<row && Y>=0 && Y<column && !didVisit[X][Y]) {
  19.             didVisit[X][Y] = 1;
  20.             if (grid[X][Y] == '@') {
  21.                 operationTorchlight(X,Y);
  22.             }
  23.         }
  24.     }
  25. }
  26.  
  27. int main() {
  28.     while (1) {
  29.         scanf("%d%d",&row,&column);
  30.         if (row == 0 && column == 0) break;
  31.         cnt=0;
  32.  
  33.         int i,j;
  34.  
  35.         for (i=0;i<row;i++) scanf("%s", &grid[i]);
  36.  
  37.         for (i=0;i<row;i++) {
  38.             for (j=0;j<column;j++) {
  39.                 if (!(didVisit[i][j])) {
  40.                     didVisit[i][j] = 1;
  41.                     if (grid[i][j] == '@') {
  42.                         cnt++;
  43.                         operationTorchlight(i,j);
  44.                     }
  45.                 }
  46.             }
  47.         }
  48.         printf("%d\n", cnt);
  49.         for(i=0;i<100;i++) {
  50.             for (j=0;j<100;j++) grid[i][j] = '*';
  51.         }
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment