문제 설명
1. Connected Component 의 개수를 구하면 된다.
즉 연결되있는 Vertex 끼리 그룹화 시켜서 그룹의 개수를 구하면 됨.
풀이
BFS 를 사용해도 풀 수 있지만, 더 많은 코드가 필요할 것 같아서 dfs 를 사용해서 풀었다.
well-known 문제이기 때문에 설명은 필요없을 것 같다.
1. visited, edges 를 이용해서 품
코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
import java.io.*; | |
/** | |
* https://www.acmicpc.net/problem/11724 | |
* BOJ 백준온라인져지 11724 연결 요소의 개수 풀이 | |
*/ | |
public class Main { | |
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); | |
private static int N, M; | |
private static boolean visited[], edges[][]; | |
public static void main(String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
N = Integer.parseInt(st.nextToken()); | |
M = Integer.parseInt(st.nextToken()); | |
edges = new boolean[N + 1][N + 1]; | |
for (int i = 0; i < M; i++) { | |
st = new StringTokenizer(br.readLine()); | |
int s = Integer.parseInt(st.nextToken()); | |
int e = Integer.parseInt(st.nextToken()); | |
edges[s][e] = edges[e][s] = true; | |
} | |
visited = new boolean[N + 1]; | |
int result = 0; | |
for (int i = 1; i <= N; i++) { | |
if (!visited[i]) { | |
result++; | |
dfs(i); | |
} | |
} | |
bw.write(String.valueOf(result)); | |
bw.flush(); | |
} | |
private static void dfs (int x) { | |
visited[x] = true; | |
for (int i = 1; i <= N; i++) { | |
if (!edges[x][i] || visited[i]) continue; | |
dfs(i); | |
} | |
} | |
} |
문제
방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.
출력
첫째 줄에 연결 요소의 개수를 출력한다.
예제 입력 1
6 5 1 2 2 5 5 1 3 4 4 6
예제 출력 1
2
예제 입력 2
6 8 1 2 2 5 5 1 3 4 4 6 5 4 2 4 2 3
예제 출력 2
1
출처
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 10824 네 수 풀이 (0) | 2018.06.22 |
---|---|
BOJ 백준온라인져지 1550 16진수 풀이 (0) | 2018.06.21 |
BOJ 백준온라인져지 9663 N-Queen 풀이 (0) | 2018.06.20 |
BOJ 백준온라인져지 1699 제곱수의 합 풀이 (0) | 2018.06.19 |
BOJ 백준온라인져지 2583 영역 구하기 풀이 (0) | 2018.06.19 |