๋ฌธ์ ๋ BFS๋ก ๊ฐ๋จํ ํ๋ฆฌ๋๋ฐ, N๊ณผ M์ ๋ฐฉํฅ ๋๋ฌธ์ ํท๊ฐ๋ฆฐ๋ค.
๋๋ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ํ๋ผ ๋ array[n][m]
์ด๋ ๊ฒ ๋ง์ด ์ฌ์ฉํ๋๋ฐ, ๋ฐ์ง๊ณ ๋ณด๋ฉด ์ธ๋ก์ ๊ธธ์ด๋ฅผ ๊ฐ๋ก์ ๊ธธ์ด๋ณด๋ค ๋จผ์ ๋ํ๋ด๋ ๊ฑฐ๋ค. ๊ทผ๋ฐ ๋ฌธ์ ์
๋ ฅ์์๋ (X,Y) ์์ผ๋ก ์ฃผ์ด์ง๋ค. ์ฆ, ์ขํ ํ๋ฉด์ ์๊ฐํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ก ์์น๋ฅผ ์ธ๋ก ์์น๋ณด๋ค ๋จผ์ ์๋ ค์ฃผ๋ ๊ฒ!
๋ณ ๊ฑฐ ์๋ ์๋ ์๋๋ฐ, ์ฝ๋์งค ๋ Y๋ฅผ ์์ ๋๊ณ ์๊ฐํ ๋ผ๋๊น ๋ญ๊ฐ ๋ฏ์ค์ด์ ํท๊ฐ๋ ธ๋ค. N์ด M๋ณด๋ค ๋จผ์ ์ค๋ ๊ฑด ํ๋๋ ์ ํท๊ฐ๋ฆฌ๋๋ฐ!
/* 2020.12.06(์ผ)*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main1012_์ ๊ธฐ๋๋ฐฐ์ถ {
static int N, M, K;
static boolean[][] baeju;
static boolean[][] visited;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine().trim());
for(int t=1;t<=T;t++) {
String[] str = br.readLine().trim().split(" ");
M = Integer.parseInt(str[0]); //๊ฐ๋ก๊ธธ์ด
N = Integer.parseInt(str[1]); //์ธ๋ก๊ธธ์ด
K = Integer.parseInt(str[2]);
baeju = new boolean[N][M];
visited = new boolean[N][M];
int x,y;
for(int k=0;k<K;k++) {
str = br.readLine().trim().split(" ");
x = Integer.parseInt(str[0]); //M์ ํด๋น
y = Integer.parseInt(str[1]); //N์ ํด๋น
baeju[y][x] = true;
}
int cnt = 0;
for(int a=0;a<N;a++) {
for(int b=0;b<M;b++) {
if(baeju[a][b]&& !visited[a][b]) {
cnt++;
bfs(a,b,cnt);
}
}
}
sb.append(cnt+"\n");
}
System.out.println(sb.toString());
}
private static void bfs(int a, int b, int cnt) {
visited[a][b] = true;
Queue<int[]> que = new LinkedList<int[]>();
que.add(new int[] {a,b});
int[] tmp;
int tmpX, tmpY, newX, newY;
while(!que.isEmpty()) {
tmp = que.poll();
tmpY = tmp[0];
tmpX = tmp[1];
int[][] dir = {{1,0},{-1,0},{0,1},{0,-1}};
for(int d=0;d<4;d++) {
newY = tmpY + dir[d][0];
newX = tmpX + dir[d][1];
if(newY>=0 && newY<N && newX>=0 && newX<M
&& !visited[newY][newX] && baeju[newY][newX]) {
visited[newY][newX] = true;
que.add(new int[] {newY, newX});
}
}
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ] ๋ฐฑ์ค 7576 - ํ ๋งํ (0) | 2020.12.12 |
---|---|
[์๋ฐ] ๋ฐฑ์ค 1753 - ์ต๋จ๊ฒฝ๋ก (0) | 2020.12.06 |
[์๋ฐ] ๋ฐฑ์ค 2667 - ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2020.12.06 |
[์๋ฐ] ๋ฐฑ์ค 2606 - ๋ฐ์ด๋ฌ์ค (0) | 2020.12.05 |
[์๋ฐ] ๋ฐฑ์ค 1260 - DFS์ BFS (0) | 2020.12.05 |