๋ฌธ์
์ฐจ์ธ๋ ์๋์ธ ํ๋๋ ๊ฐ์๋ ๊ณ ๋ญ์ง์์ ์ ๊ธฐ๋ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๊ธฐ๋ก ํ์๋ค. ๋์ฝ์ ์ฐ์ง ์๊ณ ย ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ค๋ฉด ๋ฐฐ์ถ๋ฅผ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์, ํ๋๋ ํด์ถฉ ๋ฐฉ์ง์ย ํจ๊ณผ์ ์ธ ๋ฐฐ์ถํฐ์ง๋ ์ด๋ฅผ ๊ตฌ์
ํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค. ์ด ์ง๋ ์ด๋ ๋ฐฐ์ถ๊ทผ์ฒ์ ์์ํ๋ฉฐ ํด์ถฉ์ ์ก์ย ๋จน์์ผ๋ก์จ ๋ฐฐ์ถ๋ฅผ ๋ณดํธํ๋ค. ํนํ, ์ด๋ค ๋ฐฐ์ถ์ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ผ๋ ์ด๊ณ ์์ผ๋ฉด ์ด ์ง๋ ์ด๋ ์ธ์ ํ ๋ค๋ฅธ ๋ฐฐ์ถ๋ก ์ด๋ํ ์ ์์ด, ๊ทธ ๋ฐฐ์ถ๋ค ์ญ์ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฐ์ ์ ์๋ค. ํ ๋ฐฐ์ถ์ ์ํ์ข์ฐ ๋ค ๋ฐฉํฅ์ ๋ค๋ฅธ ๋ฐฐ์ถ๊ฐ ์์นํ ๊ฒฝ์ฐ์ ์๋ก ์ธ์ ํด์๋ ๊ฒ์ด๋ค.
ํ๋๊ฐ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ๋
์ ๊ณ ๋ฅด์ง ๋ชปํด์ ๋ฐฐ์ถ๋ฅผ ๊ตฐ๋ฐ๊ตฐ๋ฐ ์ฌ์ด ๋์๋ค. ๋ฐฐ์ถ๋ค์ด ๋ชจ์ฌ์๋ ๊ณณ์๋ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ง ์์ผ๋ฉด ๋๋ฏ๋ก ์๋ก ์ธ์ ํด์๋ ๋ฐฐ์ถ๋ค์ด ๋ช ๊ตฐ๋ฐ์ ํผ์ ธ์๋์ง ์กฐ์ฌํ๋ฉด ์ด ๋ช ๋ง๋ฆฌ์ ์ง๋ ์ด๊ฐ ํ์ํ์ง ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ฐฐ์ถ๋ฐญ์ด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์์ผ๋ฉด ์ต์ 5๋ง๋ฆฌ์ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ์ํ๋ค. 0์ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์์ง ์์ ๋
์ด๊ณ , 1์ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์๋ ๋
์ ๋ํ๋ธ๋ค.
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
---|
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
์
๋ ฅ
์
๋ ฅ์ ์ฒซ ์ค์๋ ํ
์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ
์คํธ ์ผ์ด์ค์ ๋ํด ์ฒซ์งธ ์ค์๋ ๋ฐฐ์ถ๋ฅผ ์ฌ์ ๋ฐฐ์ถ๋ฐญ์ ๊ฐ๋ก๊ธธ์ด M(1 โค M โค 50)๊ณผ ์ธ๋ก๊ธธ์ด N(1 โค N โค 50), ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์๋ ์์น์ ๊ฐ์ K(1 โค K โค 2500)์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ K์ค์๋ ๋ฐฐ์ถ์ ์์น X(0 โค X โค M-1), Y(0 โค Y โค N-1)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฐฐ์ถ์ ์์น๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
๊ฐ ํ
์คํธ ์ผ์ด์ค์ ๋ํด ํ์ํ ์ต์์ ๋ฐฐ์ถํฐ์ง๋ ์ด ๋ง๋ฆฌ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์
โ
์
๋ ฅ 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| 2
10 8 17
0 0
1 0
1 1
4 2
4 3
4 5
2 4
3 4
7 4
8 4
9 4
7 5
8 5
9 5
7 6
8 6
9 6
10 10 1
5 5
|
โ
์ถ๋ ฅ 1
โ
์
๋ ฅ 2
1
2
3
4
5
6
7
8
| 1
5 3 6
0 2
1 2
2 2
3 2
4 2
4 0
|
โ
์ถ๋ ฅ 2
์์ฑ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| import java.io.*;
import java.util.*;
public class Main {
/**
* BFS๋ฅผ ํตํด 1๋ก ์ด์ด์ ธ ์๋ ๋ฌถ์ ๊ฐ์๋ฅผ ์นด์ดํธ
*/
static int[] dx = {-1, 1, 0, 0};
static int[] dy = {0, 0, 1, -1};
public static class Pair {
private int x;
private int y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
int getX() {
return x;
}
int getY() {
return y;
}
}
public static void bfs(int x, int y, int[][] arr, int[][] visited) {
Deque<Pair> q = new ArrayDeque<>();
Pair pair = new Pair(x, y);
visited[y][x] = 1;
q.add(pair);
while (!q.isEmpty()) {
Pair item = q.poll();
x = item.getX();
y = item.getY();
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if ((0 <= nx && nx < arr[0].length) && (0 <= ny && ny < arr.length)) {
if (visited[ny][nx] != 1 && arr[ny][nx] == 1) {
visited[ny][nx] = 1;
q.add(new Pair(nx, ny));
}
}
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// ํ
์คํธ ์ผ์ด์ค ์
๋ ฅ
int t = Integer.parseInt(br.readLine());
// ํ
์คํธ ์ผ์ด์ค ๋ฐ๋ณต
for (int i = 0; i < t; i++) {
String[] input = br.readLine().split(" ");
int m = Integer.parseInt(input[0]);
int n = Integer.parseInt(input[1]);
int k = Integer.parseInt(input[2]);
int[][] graph = new int[n][m];
int[][] visited = new int[n][m];
// k๊ฐ์ ์ขํ ์
๋ ฅ
for (int j = 0; j < k; j++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
graph[y][x] = 1;
}
// 1๋ก ์ด์ด์ ธ ์๋ ๋ฌถ์ ๊ฐ์๋ฅผ ์นด์ดํธ
int count = 0;
for (int j = 0; j < n; j++) {
for (int l = 0; l < m; l++) {
if (visited[j][l] != 1 && graph[j][l] == 1) {
bfs(l, j, graph, visited);
count++;
}
}
}
// ์ถ๋ ฅ
System.out.println(count);
}
}
}
|
- ์ ํ์ ์ธ
BFS
๋ฌธ์ ๋ก, DFS
๋ก ํ์ด๋ ๋ฌธ์ ๋ ์๋ค. Pair
ํด๋์ค๋ x
์ถ๊ณผ y
์ถ์ ๋ฌถ์ด์ ์ฌ์ฉํ๊ธฐ ์ํด ์์ฑํ์๋ค.bfs()
๋ฉ์๋๋ ์ธ๋ถ์์ ์ฃผ์
ํ x
, y
์ขํ๋ฅผ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌํ๊ณ , ์ํ์ข์ฐ๋ฅผ ์๋ค ๊ฐ๋ค ํ๋ฉฐ ์ธ์ ํ ์์ญ์ ๋ชจ๋ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌํ๋ค.main()
ย ๋ฉ์๋์์๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๋ฐฉ๋ฌธํ์ง ์์ ์์ญ์ด ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ bfs()
๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.- ํธ์ถํ ํ์๊ฐ ๋ฐฐ์ถ ๋ฐญ ์์ญ์ ๊ฐ์๊ฐ ๋๋ค.
ํ๊ณ
BFS
์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ Pair
ํด๋์ค๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ๋ณด๋ค๋ ํํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.