File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 1+ # 특정 원소가 속한 집합을 찾기
2+ def find_parent (parent , x ):
3+ # 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출
4+ if parent [x ] != x :
5+ parent [x ] = find_parent (parent , parent [x ])
6+ return parent [x ]
7+
8+ # 두 원소가 속한 집합을 합치기
9+ def union_parent (parent , a , b ):
10+ a = find_parent (parent , a )
11+ b = find_parent (parent , b )
12+ if a < b :
13+ parent [b ] = a
14+ else :
15+ parent [a ] = b
16+
17+ # 노드의 개수와 간선(Union 연산)의 개수 입력 받기
18+ v , e = map (int , input ().split ())
19+ parent = {}
20+
21+ # 부모 테이블상에서, 부모를 자기 자신으로 초기화
22+ for i in range (1 , v + 1 ):
23+ parent [i ] = i
24+
25+ cycle = False # 사이클 발생 여부
26+
27+ for i in range (e ):
28+ a , b = map (int , input ().split ())
29+ # 사이클이 발생한 경우 종료
30+ if find_parent (parent , a ) == find_parent (parent , b ):
31+ cycle = True
32+ break
33+ else :
34+ union_parent (parent , a , b )
35+
36+ if cycle :
37+ print ("사이클이 발생했습니다." )
38+ else :
39+ print ("사이클이 발생하지 않았습니다." )
You can’t perform that action at this time.
0 commit comments