#include <cstdio>
#include <iostream>
using namespace std;
#define START_NUM 10
int T, M, N, K; // 테케, 가로, 세로, 배추 심어진 갯수
int arr[55][55];
int kArr[2550][2];
int dx[4] = { 0, 1, 0, -1 }; int dy[4] = { 1, 0, -1, 0 };
void dfs(int x, int y, int num)
{
arr[x][y] = num;
for (int dir = 0; dir < 4; dir++){
int nextX = x + dx[dir], nextY = y + dy[dir];
//맵 밖으로 나가지 않는 경우만
if (nextX >= 0 || nextY >= 0 || nextX < M || nextY < N){
if (arr[nextX][nextY] == 1){
dfs(nextX, nextY, num);
}
}
}
}
int main()
{
scanf(" %d", &T);
for (int tc = 1; tc <= T; tc++){
int number = START_NUM;
scanf(" %d %d %d", &M, &N, &K);
for (int k = 0; k < K; k++){
scanf(" %d %d", &kArr[k][0], &kArr[k][1]);
arr[kArr[k][0]][kArr[k][1]] = 1;
}
for (int k = 0; k < K; k++){
if (arr[kArr[k][0]][kArr[k][1]] == 1){
dfs(kArr[k][0], kArr[k][1], number);
number++; //처음 그룹 번호는 10부터 시작하도록 설정
}
}
/*for (int i = 0; i < N; i++){
for (int j = 0; j < M; j++){
printf("%2d", arr[i][j]);
}
printf("\n");
}*/
printf("%d \n", number - START_NUM);
}
return 0;
}
'이것저것' 카테고리의 다른 글
SW 2117 홈 방범 서비스 (0) | 2018.04.14 |
---|---|
백준 2468 안전 영역 (0) | 2018.04.14 |
백준 5427 불 (0) | 2018.04.14 |
백준 2146 다리만들기 (0) | 2018.04.14 |
SW 2477 차량 정비소 문제 (0) | 2018.04.12 |
댓글