fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int a[100][100];
  5. int vis[100][100];
  6. int dx[] = {0, 0, 1, -1, 1, -1, 1, -1};
  7. int dy[] = {1, -1, 0, 0, 1, 1, -1, -1};
  8.  
  9.  
  10. void dfs(int i, int j, int n, int m) {
  11. if(vis[i][j] || i >= n || j >= m || i < 0 || j < 0 || !a[i][j])
  12. return;
  13.  
  14. vis[i][j] = 1;
  15. for(int k = 0; k < 8; k++)
  16. dfs(i + dx[k], j + dy[k], n, m);
  17.  
  18. }
  19. int main()
  20. {
  21. int n, m;
  22. scanf("%d%d", &n, &m);
  23.  
  24. for(int i = 0; i < n; i++)
  25. {
  26. for(int j = 0; j < m; j++)
  27. {
  28. scanf("%d", &a[i][j]);
  29. }
  30. }
  31.  
  32. int res = 0;
  33. for(int i = 0; i < n; i++)
  34. {
  35. for(int j = 0; j < m; j++)
  36. {
  37. if(a[i][j])
  38. {
  39. if(!vis[i][j])
  40. res++;
  41. dfs(i, j, n, m);
  42. }
  43. }
  44. }
  45.  
  46. printf("%d", res);
  47. return 0;
  48. }
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
Standard output is empty