https://www.acmicpc.net/problem/11724
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
1. 풀이
연결요소의 개수를 찾는 문제로, 정점의 개수만큼 루프를 돌며 방문한 적이 없는 정점이면 dfs나 bfs를 해주면서 count해주면 되는 문제입니다. 저는 dfs를 통해 풀이를 하였습니다.
2. 코드
import java.util.*;
public class Main {
static int[][] graph = new int[1001][1001];
static int V;
static int E;
static boolean[] visited = new boolean[1001];
public static void dfs(int index) {
if(visited[index] == true)
return;
else {
visited[index] = true;
for(int i = 1; i <= V; i++) {
if(graph[index][i] == 1) {
dfs(i);
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
V = sc.nextInt();
E = sc.nextInt();
int a,b;
for(int i = 0; i < E; i++) {
a = sc.nextInt();
b = sc.nextInt();
// 간선 연결
graph[a][b] = graph[b][a] = 1;
}
int result = 0 ;
// dfs 탐색
for(int i = 1; i <= V; i++) {
if(visited[i] == false) { // 방문한 적 없는 노드라면 dfs.
dfs(i);
result++;
}
}
System.out.println(result);
sc.close();
return;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1463] 1로 만들기 - 자바 (0) | 2020.04.01 |
---|---|
[백준 14502]연구소 - 자바 (0) | 2020.03.31 |
[백준 11403] 경로 찾기 - 자바 (0) | 2020.03.31 |
[백준 1012] 유기농 배추 - 자바 (0) | 2020.03.30 |
[백준 2667]단지번호붙이기 - 자바 (0) | 2020.03.30 |
댓글