[BOJ] 1012번 유기농 배추

yeham·2023년 4월 9일
0

백준

목록 보기
22/22

문제

유기농 배추

코드

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <utility>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <string>

using namespace std;

int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int t, m, n, k;
	int x, y;
	int bug;
	stack<pair<int, int>> q;
	pair<int, int> insert;

	cin >> t;
    
	for(int i = 0; i < t; i++)
	{
		cin >> m >> n >> k;
        
		int board[n][m];
        
		for (int i = 0; i < n; i++)
			for (int j = 0; j < m; j++)
				board[i][j] = 0;
				

		for (int i = 0; i < k; i++)
		{
			cin >> x >> y;
			board[y][x] = 1;
			insert.first = y;
			insert.second = x;
			q.push(insert);
		}

		while (!q.empty())
		{
			insert = q.top();
			q.pop();
			if (board[insert.first][insert.second] == 1)
			{
				board[insert.first][insert.second] = 2;
				bug++;
			}
			for (int i = 0; i < 4; i++)
			{
				int new_x = insert.second + dx[i];
				int new_y = insert.first + dy[i];
				if (new_x < 0 || new_x >= m || new_y < 0 || new_y >= n)
					continue;
				if (board[new_y][new_x] == 0 || board[new_y][new_x] == 2)
					continue;
				if (board[new_y][new_x] == 1)
					board[new_y][new_x] = 2;
				q.push({new_y, new_x});
			}
		}
		cout << bug << '\n';
		bug = 0;
	}
}
profile
정통과 / 정처기 & 정통기 / 42seoul 7기 Cardet / 임베디드 SW 개발자

0개의 댓글