백준 1012 유기농 배추

hyun20·2021년 7월 11일
0

#include <iostream>
using namespace std;
int count;
int label[50][50];
int n;
int m;
bool isValid(int a, int b)
{return (0 <= a && a < m) && (0 <= b && b < n);}

void dfs(int a, int b, int lb) {
	int x, y;
	label[a][b] = lb;
	for (int i = 0; i < 4; i++) {
		switch (i) {
		case 0:x = a - 1; y = b; break;
		case 1:x = a + 1; y = b; break;
		case 2:x = a; y = b - 1; break;
		case 3:x = a; y = b + 1; break;
		}
		if (isValid(x,y)&&label[x][y] == 1) dfs(x,y, lb);
	}
}
void vegCount(int m,int  n ) {
	int count = 0;
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			if (label[i][j] == 1) {
				count++;
				dfs(i, j, count + 1);
			}
		}
	}
	cout << count << endl;
}
int main() {
	int testN, num, x, y;
	cin >> testN;
	for (int i = 0; i < testN; i++) {
		label[50][50] = { 0 };
		cin >> m >> n >> num;
		for (int i = 0; i < num; i++) {
			cin >> x >> y;
			label[x][y] = 1;
		}
		vegCount(m, n);
	}
}

예제와 출력이 일치했지만 계속 오답이 나왔다
isValid()함수를 작성하지 않아서 틀렸었다.

0개의 댓글