#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()함수를 작성하지 않아서 틀렸었다.