반응형

https://www.acmicpc.net/problem/20040

 

20040번: 사이클 게임

사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한

www.acmicpc.net

 

같은 최상위 부모를 공유하고 있다면, 두 점을 연결하는 순간 사이클이 생기게 됩니다.

 

#include <cstdio>
#include <cstring>
int set[500000], n, m, a, b, ans = 0;
int findParent(int x) {
	if (set[x] != -1) return set[x] = findParent(set[x]);
	else return x;
}
int main() {
	memset(set, -1, sizeof(set));
	scanf("%d %d", &n, &m);
	for (int i = 1; i <= m && scanf("%d %d", &a, &b); i++) {
		int pa = findParent(a), pb = findParent(b);
		if (pa == pb) {
			ans = i;
			break;
		}
		set[pa] = pb;
	}
	printf("%d", ans);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 11279 : 최대 힙  (0) 2021.11.14
백준 1927 : 최소 힙  (0) 2021.11.14
백준 2607 : 비슷한 단어  (0) 2021.11.14
백준 4195 : 친구 네트워크  (0) 2021.11.14
백준 1976 : 여행 가자  (0) 2021.11.14

+ Recent posts