하다보니

1012번-유기농 배추 본문

알고리즘 풀이/백준

1012번-유기농 배추

claire 2022. 2. 3. 17:58
#include<bits/stdc++.h>
#define X first
#define Y second
using namespace std;

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

int main() {
	int T;	//테스트 케이스
	cin >> T;
	while (T--) {
		int m, n, k;//가로길이, 세로길이, 배추 위치
		cin >> m >> n >> k;
		int board[52][52] = { 0 };
		int vis[52][52] = { false };
		int a, b;
		int cnt = 0;
		queue<pair<int, int>> Q;
		for (int i = 0; i < k; i++) {
			cin >> a >> b;
			board[b][a] = 1;
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (board[i][j] == 1&&!vis[i][j]) {
					Q.push({ i,j });
					vis[i][j] = true;
					while (!Q.empty()) {
						auto cur = Q.front(); Q.pop();
						for (int i = 0; i < 4; i++) {
							int nx = cur.X + dx[i];
							int ny = cur.Y + dy[i];
							if (nx<0 || nx>n || ny<0 || ny>m)continue;
							if (vis[nx][ny] || board[nx][ny] != 1)continue;
							Q.push({ nx,ny });
							vis[nx][ny] = true;
						}
					}
					cnt++;
				}
			}
		}
		cout << cnt<<"\n";
	}
}

가로 세로 변수 잘 살피기

'알고리즘 풀이 > 백준' 카테고리의 다른 글

7569번-토마토  (0) 2022.02.05
10026번-적록색약  (0) 2022.02.04
1697번-숨바꼭질  (0) 2022.02.03
1697번-불!  (0) 2022.01.30
7576번-토마토  (0) 2022.01.29