본문 바로가기
이것저것

백준 1012 유기농 배추

by 문자메일 2018. 4. 14.

#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

댓글