sadiqul_amin

wet lands of florida

Jun 21st, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define mx 510
  4.  
  5. char grid[mx][mx];
  6. char grid2[mx][mx];
  7.  
  8. int count = 0;
  9. int ara[] = { -1, 0, 1 };
  10. int n, m;
  11. int len;
  12.  
  13. void init()
  14. {
  15.     int i, j;
  16.  
  17.     for (i = 0; i < mx; i++)
  18.         for (j = 0; j < mx; j++)
  19.             grid[i][j] = grid2[i][j] = '\0';
  20. }
  21.  
  22. int checkValidity(int x, int y)
  23. {
  24.     if (x < 0)
  25.         return 0;
  26.     if (x >= m)
  27.         return 0;
  28.  
  29.     if (y < 0)
  30.         return 0;
  31.     if (y >= len)
  32.         return 0;
  33.  
  34.     return 1;
  35. }
  36.  
  37. void copyGrid()
  38. {
  39.     count = 0;
  40.     int i, j;
  41.  
  42.     for (i = 0; i < m; i++)
  43.     {
  44.  
  45.         for (j = 0; j < strlen(grid[i]) ; j++)
  46.         {
  47.             grid2[i][j] = grid[i][j];
  48.         }
  49.         grid2[i][j] = '\0';
  50.     }
  51. }
  52.  
  53. void fill(int x, int y)
  54. {
  55.     int i, j;
  56.  
  57.     grid2[x][y] = 'L';
  58.     count++;
  59.  
  60.     for (i = 0; i < 3; i++)
  61.     {
  62.         for (j = 0; j < 3; j++)
  63.         {
  64.             if (checkValidity(x + ara[i], y + ara[j]) && grid2[x + ara[i]][y + ara[j]] == 'W')
  65.             {
  66.                 fill(x + ara[i], y + ara[j]);
  67.             }
  68.         }
  69.     }
  70.  
  71. }
  72.  
  73.  
  74. int main()
  75. {
  76.     // freopen("input.txt", "r", stdin);
  77.     // freopen("output.txt", "w", stdout);
  78.  
  79.     int t, T, i, j, k;
  80.     int x, y;
  81.     int u, v;
  82.     char st[100];
  83.     int fcheck = 0;
  84.  
  85.     scanf("%d", &T);
  86.     getchar();
  87.     getchar();
  88.  
  89.     for (t = 1; t <= T; t++)
  90.     {
  91.         i = 0;
  92.         n = 0;
  93.         m = 0;
  94.  
  95.         if (t != 1)
  96.             printf("\n");
  97.  
  98.         init();
  99.  
  100.         while ( gets(grid[i]) )
  101.         {
  102.             if (grid[i][0] == '\0')
  103.                 break;
  104.             if (grid[i][0] != 'W' && grid[i][0] != 'L' && 0 == n)
  105.                 n = i;
  106.             i++;
  107.         }
  108.         m = i;
  109.         len = strlen(grid[0]);
  110.  
  111.         for (k = n; k < m; k++)
  112.         {
  113.             x = y = i = 0;
  114.  
  115.             while (grid[k][i] != ' ')
  116.                 x = x * 10 + (grid[k][i++] - '0');
  117.             i++;
  118.  
  119.             while (grid[k][i] != '\0')
  120.                 y = y * 10 + (grid[k][i++] - '0');
  121.  
  122.             copyGrid();
  123.  
  124.             fill(x - 1, y - 1);
  125.             printf("%d\n", count);
  126.  
  127.         }
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment