λ°μν
λ¬Έμ
νμ΄
dfsλ₯Ό μ΄μ©ν΄ λ€ λμλλ° λ°©λ¬Ένμ§ μμ κ³³μ΄ μλ€λ©΄ +(νλ¬μ€)λ₯Ό ν΄μ£Όμ΄ μ°κ²° μμμ κ°μλ₯Ό λν΄μ£Όμλ€.
μ΄μ μμΌ dfsμ λν΄μ μ μ μ΄ν΄νκ² λλ κ² κ°λ€..
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static boolean[] visited;
public static List<Integer>[] graph;
public static int answer = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// 첫째 μ€μ μ μ μ κ°μ Nκ³Ό κ°μ μ κ°μ Mμ΄ μ£Όμ΄μ§λ€.
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
visited = new boolean[N + 1];
graph = new ArrayList[N + 1];
for (int i = 0; i < N + 1; i++) {
graph[i] = new ArrayList<>();
}
for (int i = 0; i < K; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st2.nextToken());
int b = Integer.parseInt(st2.nextToken());
graph[a].add(b);
graph[b].add(a);
}
for (int i = 1; i < N + 1; i++) {
// μ°κ²° λμ΄μμ§ μμ λ +λ₯Ό ν΄μ€λ€.
if (!visited[i]) {
answer++;
dfs(i);
}
}
System.out.println(answer);
}
// κΉμ΄ μ°μ νμμΌλ‘ κ²μ¬
public static void dfs(int num) {
visited[num] = true;
for (int i = 0; i < graph[num].size(); i++) {
if (!visited[graph[num].get(i)]) {
dfs(graph[num].get(i));
}
}
}
}
μ λ΅
λ°μν
'π°ππππππππ > π±πππππππ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/Java] μλ£κ΅¬μ‘°λ μ λ§ μ΅κ³ μΌ 23253 (1) | 2025.07.04 |
---|---|
[λ°±μ€/Java] 2Γn νμΌλ§ 2 11727 λ©λͺ¨μ΄μ μ΄μ (1) | 2025.07.01 |
[λ°±μ€/Java] 2Γn νμΌλ§ 11726 λ©λͺ¨μ μ΄μ (1) | 2025.06.29 |
[λ°±μ€/Java] λ°μ΄λ¬μ€ 2606 κ·Έλν νμ(DFS) (1) | 2025.06.28 |
[λ°±μ€/Java] FizzBuzz 28702 (1) | 2025.06.27 |