์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
1 ์ด | 512 MB | 33.788% |
๋ฌธ์
ํด์ถฉ ๋ฐฉ์ง์ ํจ๊ณผ์ ์ธ ๋ฐฐ์ถํฐ์ง๋ ์ด๋ฅผ ๊ตฌ์ ํ๋ค. ์ด ์ง๋ ์ด๋ ๋ฐฐ์ถ๊ทผ์ฒ์ ์์ํ๋ฉฐ ํด์ถฉ์ ์ก์ ๋จน์์ผ๋ก์จ ๋ฐฐ์ถ๋ฅผ ๋ณดํธํ๋ค. ํนํ, ์ด๋ค ๋ฐฐ์ถ์ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ผ๋ ์ด๊ณ ์์ผ๋ฉด ์ด ์ง๋ ์ด๋ ์ธ์ ํ ๋ค๋ฅธ ๋ฐฐ์ถ๋ก ์ด๋ํ ์ ์์ด, ๊ทธ ๋ฐฐ์ถ๋ค ์ญ์ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฐ์ ์ ์๋ค.
๋ฐฐ์ถ๋ค์ด ๋ชจ์ฌ์๋ ๊ณณ์๋ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ง ์์ผ๋ฉด ๋๋ฏ๋ก ์๋ก ์ธ์ ํด์๋ ๋ฐฐ์ถ๋ค์ด ๋ช ๊ตฐ๋ฐ์ ํผ์ ธ์๋์ง ์กฐ์ฌํ๋ฉด ์ด ๋ช ๋ง๋ฆฌ์ ์ง๋ ์ด๊ฐ ํ์ํ์ง ์ ์ ์๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ํ์ํ ์ต์์ ๋ฐฐ์ถํฐ์ง๋ ์ด ๋ง๋ฆฌ ์๋ฅผ ์ถ๋ ฅํ๋ผ.
ํด๊ฒฐ๋ฐฉ์
์ผ๋ฐ์ ์ธ DFS๋ฅผ ํตํด์ ์ฝ๊ฒ ํ ์ ์์๋ค. chk๋ฐฐ์ด๊ณผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ arr๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์ฒดํฌ๊ฐ ๋์ด์์ง ์๊ณ , ๋ฐฐ์ถ๊ฐ ์๋ค๋ฉด DFS๋ฅผ ๋๊ฒ๋ ํ์ฌ ๋ช ๊ฐ์ ๊ตฌ์ญ์ด ๋๋์ด ์๋์ง ์ฐพ์์ ํ์ํ ๋ฐฐ์ถํฐ์ง๋ ์ด์ ์๋ฅผ ์ถ๋ ฅํ์๋ค.
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
2012 KB | 0 ms |
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
|
#include<iostream>
#include<string.h>
using namespace std;
#define F(x,y,u,p) for(int x = 0; x<u; x++)for(int y = 0; y<p; y++)
int t, n, m, k, arr[55][55], chk[55][55], dx[] = { 0,1,0,-1 }, dy[] = { 1,0,-1,0 }, cnt;
void dfs(int r, int c) {
chk[r][c] = 1;
for (int i = 0; i < 4; i++) {
int nr = r + dx[i], nc = c + dy[i];
if (nr < 0 || nr >= n || nc < 0 || nc >= m || chk[nr][nc] || !arr[nr][nc]) continue;
chk[nr][nc] = 1;
dfs(nr, nc);
}
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d %d %d", &n, &m, &k);
for (int i = 0, a, b; i < k; i++) {
scanf("%d %d", &a, &b);
arr[a][b] = 1;
}
F(i, j, n, m) {
if (!chk[i][j] && arr[i][j]) {
dfs(i, j); cnt++;
}
}
printf("%d\n", cnt);
cnt = 0;
memset(arr, 0, sizeof(arr));
memset(chk, 0, sizeof(chk));
}
return 0;
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด (0) | 2019.12.16 |
---|---|
[BOJ] #9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2019.10.15 |
[BOJ] #10026 ์ ๋ก์์ฝ (0) | 2019.10.13 |
[BOJ] #1260 DFS์ BFS (0) | 2019.10.13 |
[BOJ] #11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2019.10.13 |
๋๊ธ