๐ฉ๐ป ๋ฌธ์ ํ๋ฌ ๊ฐ๊ธฐ
11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ
www.acmicpc.net
๐ฉ๐ป ๋ฌธ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ฉ๐ป ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ
๊ณ์ํด์ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํด๋ด๋ฉด ๋๋ ๋ฌธ์ ๋ค. ์ฒ์์ cycle์ ํ์ธํ๋ ๋ฌธ์ ์ธ ์ค ์๊ณ union-find๋ก ํ์๋ค๊ฐ ๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ผ๋ ๊ทธ๋ฅ ์ด ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ๊ฐ์๋ง return ํ๋ฉด ๋ผ์ bfs๋ก ํ์๋ค..
๐ฉ๐ป ์์ค์ฝ๋
package BOJ.bfs_dfs;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class boj11724_์ฐ๊ฒฐ์์์๊ฐ์ {
static int N, M;
static int[][] graph;
static boolean isCycler;
static int result;
static boolean[] visit;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
result = 0;
graph = new int[N + 1][N + 1];
visit = new boolean[N + 1];
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine(), " ");
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
graph[u][v] = 1;
graph[v][u] = 1;
}
for (int i = 1; i < N + 1; i++) {
if (visit[i] == false) {
bfs(i);
result++;
}
}
System.out.println(result);
}
static void bfs(int value) {
Queue<Integer> q = new LinkedList<>();
q.offer(value);
visit[value] = true;
while (!q.isEmpty()) {
int cur = q.poll();
for (int i = 1; i < N + 1; i++) {
if (visit[i] == false && graph[cur][i] == 1) {
visit[i] = true;
q.offer(i);
}
}
}
}
}
๐ฉ๐ป ๋ฆฌ๋ทฐ
ํ๋ก์ ํธ ๋๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ ํ ์๊ฐ์ด ๋๋ฌด ์๋ค ๐๐๐
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/BOJ][JAVA] 23757 - ์์ด๋ค๊ณผ ์ ๋ฌผ์์ (0) | 2022.04.05 |
---|---|
[BOJ][๋ฐฑ์ค][JAVA] 2668 - ์ซ์๊ณ ๋ฅด๊ธฐ (0) | 2022.01.27 |
[BOJ][๋ฐฑ์ค][JAVA] 16562 - ์น๊ตฌ๋น (0) | 2022.01.21 |
[BOJ][๋ฐฑ์ค] 13549 - ์จ๋ฐ๊ผญ์ง 3 (0) | 2022.01.20 |
[BOJ/๋ฐฑ์ค][JAVA] 1927 - ์ต์ ํ (0) | 2022.01.13 |