관리 메뉴

기억을 위한 기록들

[백준 1012 : 유기농 배추] - C++ 본문

Coding Test - cpp/BFS

[백준 1012 : 유기농 배추] - C++

에드윈H 2021. 1. 12. 15:28

www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

#include <iostream>
#include <string> 
#include <vector>
#include <queue>
#include <string.h> //memset 용
using namespace std;
struct Location
{
	int x;
	int y;

	Location(int _x, int _y)
	{
		x = _x;
		y = _y;
	}
};
int main()
{
	int map[50][50];
	memset(map, 0, sizeof(map)); //초기화 

	int M, N, K;
	int dx[4] = { -1,0,1,0 }; //4방향용
	int dy[4] = { 0,1,0,-1 }; //4방향용


	int test= 0;

	cin >> test;
	for (int e=0; e < test; e++) {
		cin >> M >> N >> K;

		int a, b;
		for (int i = 0; i < K; i++)
		{
			cin >> a >> b;
			map[a][b] = 1;
		}

		queue<Location> Q;
		int Cnt = 0;
		for (int i = 0; i < M; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (map[i][j] == 1)
				{
					map[i][j] = 0;
					Q.push(Location(i, j));

					while (!Q.empty())
					{
						Location tmp = Q.front();
						Q.pop();

						for (int k = 0; k < 4; k++)
						{
							int xx = dx[k] + tmp.x;
							int yy = dy[k] + tmp.y;
							if (xx < 0 || M <= xx || yy < 0 || N <= yy)
								continue;
							if (map[xx][yy] == 1)
							{
								map[xx][yy] = 0;
								Q.push(Location(xx, yy));
							}
						}
					}

					Cnt++;
				}
			}
		}


		cout << Cnt << endl;
	}
	return 0;
}


'Coding Test - cpp > BFS' 카테고리의 다른 글

[백준 1697: 숨바꼭질] - C++  (0) 2021.01.14
[백준 7576: 토마토] - C++  (0) 2021.01.13
[백준 2178 : 미로 탐색] - C++  (0) 2021.01.13
[백준 2667 : 단지번호 붙이기] - C++  (0) 2021.01.12
송아지찾기(BFS)  (0) 2021.01.08