이 문제는 여러 가지 풀이 방법이 있지만 이 글에선 유니온 파인드(줄여서 유파)를 이용한 풀이를 사용하겠다. 이 문제를 간단히 요약하면 사용할 수 있는 정점이 주어지면 한 정점에서 다른 정점으로 갈 수 있는 모든 경우의 수를 구하라는 문제이다. 이때 n개의 정점들이 이어져있다고 해보자. n개의 정점들은 자신을 제외한 모든 정점에게 갈수 있다고 할 때 이 그룹에서 나올 수 있는 경우의 수는 n*(n-1)/2 개가 된다. 이 글에선 이걸 이용할 것이다. 일단 처음에 한 정점을 기준으로 번호를 다시 부여해준다.(이 글에선 1번 정점을 기준으로 했다.) 번호를 부여할때 자신의 부모 노드의 번호를 같이 저장한 뒤 입력을 받을 때 새로 부여된 자신의 번호와 부모의 번호를 함께 저장한다. 그 뒤 자신에게 부여된 번호..
solved.ac 티어 : 골드 4 www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 이문제는 설명은 길지만 요약하자면 m개의 줄에 2개의 점이 주어질 때 그 2개의 점이 같은 집합에 속하는 번째수를 출력하는 것이다. 이문제는 유니온 파인드로 풀 수 있다. import sys sys.setrecursionlimit(10**9) input=sys.stdin.readline n,m=map(int,input().split()) uf=[-1]*(n+1) def ..
- Total
- Today
- Yesterday
- 수학
- 느리게 갱신되는 세그먼트 트리
- 이분 탐색
- BOJ
- 다이나믹 프로그래밍
- 이분매칭
- 개발
- 그래프 이론
- 알고리즘
- C++
- 트리
- 그리디 알고리즘
- 그래프 탐색
- KOI
- 잡봇
- 완전 탐색
- 선분 교차 판정
- 자료 구조
- discord bot
- 깊이 우선 탐색
- 정렬
- A Dance of Fire and Ice
- 자료구조
- 트리에서의 다이나믹 프로그래밍
- codeforces
- 구현
- Python
- 세그먼트 트리
- 누적 합
- 최소 스패닝 트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |