Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인오더
- 이분그래프
- 알고리즘
- Java
- 연결요소
- 9093
- 도커
- 링킹
- 웹개발
- JAVA_HOME
- 포화이진트리
- Bottom Up
- 전공자따라잡기
- 11724
- 자바
- dfs
- 순회
- n진법게임
- 그래프
- 완전이진트리
- 프로그래머스
- 포스트오더
- 동적계획법
- 이진트리
- DynamicProgramming
- 바인딩
- 백준
- BFS
- 1707
- 피보나치
Archives
- Today
- Total
물음표 살인마
[백준11724] 연결 요소 - Connected Component란? 본문
연결요소란?
Connected Component
1~6까지 모든 요소를 하나의 그래프라고 쳤을 때 위의 그림처럼 나누어져 있는 경우가 있다.
이렇게 나누어진 각각의 그래프를 연결 요소라고 한다.
연결 요소의 조건
1. 연결 요소에 속한 모든 정점을 연결하는 경로가 있어야 한다.
2. 다른 연결 요소에 속한 정점과 연결하는 경로가 있으면 안된다.
즉 위의 그림은 2개의 연결 요소로 구성된 하나의 그래프이다.
참고로 연결 요소가 1개인 그래프는 연결 그래프라고 한다.
-----
백준 11724를 통한 연결 요소 실습
https://www.acmicpc.net/problem/11724
import java.sql.Array;
import java.util.*;
public class Main {
static List<Integer>[] arr;
static boolean[] check;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
arr = new ArrayList[n + 1];
check = new boolean[n + 1];
for (int i = 1; i <= n; i++) {
arr[i] = new ArrayList<>();
}
for (int i = 0; i < m; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
arr[a].add(b);
arr[b].add(a);
}
int result = 0;
for (int i = 1; i <= n; i++) {
if (check[i] == true) continue;
bfs(i);
result++;
}
System.out.println(result);
}
static void bfs(int node) {
Queue<Integer> q = new LinkedList<>();
q.add(node);
check[node] = true;
while (!q.isEmpty()) {
int num1 = q.remove();
for (int i = 0; i < arr[num1].size(); i++) {
int num2 = arr[num1].get(i);
if (!check[num2]){
q.add(num2);
check[num2] = true;
}
}
}
}
}
'개발지식 > Algorithm' 카테고리의 다른 글
트리 자료구조 이해하기 (0) | 2023.01.31 |
---|---|
[백준1707] 문제를 통해 이분 그래프 이해하기 (0) | 2023.01.10 |
[백준1260] DFS와 BFS 문제를 통해 그래프 탐색 이해하기 (0) | 2023.01.10 |
[백준13023] ABCDE - 그래프 표현 연습 (0) | 2023.01.07 |
[그래프] 그래프 알고리즘 기초 (0) | 2023.01.07 |
Comments