fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int t, n, m, k, a[54][54], visited[54][54], b, c, ret;
  4. int dy[] = {-1, 0, 1, 0};
  5. int dx[] = {0, 1, 0, -1};
  6.  
  7. void dfs(int y, int x){
  8. for(int i = 0; i < 4; i++){
  9. int ny = y + dy[i];
  10. int nx = x + dx[i];
  11. if(ny < 0 || ny >= n || nx < 0 || nx >= m || visited[ny][nx] || !a[ny][nx]) continue;
  12. visited[ny][nx] = 1;
  13. dfs(ny, nx);
  14. }
  15. }
  16.  
  17. int main(){
  18. ios_base::sync_with_stdio(false);
  19. cin.tie(NULL); cout.tie(NULL);
  20. cin >> t;
  21. while(t--){
  22. fill(&a[0][0], &a[0][0] + 54 * 54, 0);
  23. fill(&visited[0][0], &visited[0][0] + 54 * 54, 0);
  24. cin >> m >> n >> k;
  25. for(int i = 0; i < k; i++){
  26. cin >> b >> c;
  27. a[c][b] = 1;
  28. }
  29. for(int i = 0; i < n; i++){
  30. for(int j = 0; j < m; j++){
  31. if(!visited[i][j] && a[i][j]){
  32. visited[i][j] = 1;
  33. dfs(i, j);
  34. ret++;
  35. }
  36. }
  37. }
  38. cout << ret << '\n';
  39. }
  40. }
Success #stdin #stdout 0.01s 5300KB
stdin
2
10 8 17
0 0
1 0
1 1
4 2
4 3
4 5
2 4
3 4
7 4
8 4
9 4
7 5
8 5
9 5
7 6
8 6
9 6
10 10 1
5 5
stdout
5
6