왜 틀렸을까?
#include <bits/stdc++.h>
using namespace std;
int dy[4] = {-1,0,1,0}, dx[4] = {0,1,0,-1};
int t, n, m, k;
int bat[51][51], visited[51][51];
int now_x, now_y;
int temp_x, temp_y;
void dfs(int y, int x) {
visited[y][x]=1;
for(int i=0; i<4; i++) { //동서남북으로 확인
now_y = y+dy[i];
now_x = x+dx[i];
if(now_y<0 || now_x<0 || now_y>=n || now_x>=m) { //배열 밖으로 나가는 경우 제외
continue;
}
if(bat[now_y][now_x]==1 && !visited[now_y][now_x]) { //이미 방문했던 경우 제외
dfs(now_y, now_x);
}
}
return;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>t;
for(int i=0; i<t; i++) {
int ans=0;
cin>>n>>m>>k;
fill(&bat[0][0], &bat[0][0]+51*51, 0);
fill(&visited[0][0], &visited[0][0]+51*51, 0);
//배추 위치 입력
for(int j=0; j<k; j++) {
cin>>temp_x>>temp_y;
bat[temp_y][temp_x] = 1;
}
for(int v=0; v<n; v++) {
for(int w=0; w<m; w++) {
if(bat[v][w]==1 && !visited[v][w]) {
dfs(v, w);
ans++;
}
}
}
cout<<ans<<'\n';
}
return 0;
}