본문 바로가기
728x90

find2

[C++] 백준 20040번: 사이클 게임 https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 중요풀이 union-find 알고리즘을 활용하여 풀이를 진행한 대표적인 문제입니다. union-find 알고리즘을 적용한다면 무난하게 풀어지는 문제입니다. 소스코드 #include using namespace std; int parent[500001]; int find(int index) { if (parent[index] == index)return index; return parent[i.. 2021. 8. 23.
[C++] Union-Find 알고리즘 개념 Union-Find 알고리즘이란? 대표적인 그래프 알고리즘으로 '합집합 찾기'라는 의미를 가진 알고리즘입니다. 서로소 집합(Disjoint-Set) 알고리즘이라고도 부릅니다. 여러 개의 노드가 존재할 때 두 개의 노드를 선택해서, 선택된 두 노드가 서로 같은 그래프 상에 속해 있는지 판별하는 알고리즘입니다. 구현된 함수로는 조상 노드를 찾는 getParent(재귀함수로 구현)함수와 합집합해주는 unionParent함수 그리고 두 노드가 같은 그래프에 있는지 확인해주는 findParent함수가 있습니다. //보통 union find 알고리즘을 사용할 때 갱신을 작은 수쪽으로 수정해줍니다. //parent 찾기 int getParent(int parent[], int x) { if (parent[x] == .. 2021. 8. 23.
728x90