https://www.acmicpc.net/problem/1976
유니온파인드를 이용하는 문제.
import sys
input = sys.stdin.readline
N = int(input())
M = int(input())
adj = [[] for _ in range(N)]
class DisjointSet:
def __init__(self,n):
self.parent = list(range(n))
self.ch = [0]*n
self.size = n
def find_parent(self,x):
while x != self.parent[x]: x = self.parent[x]
return x
def union(self,x,y):
x = self.find_parent(x)
y = self.find_parent(y)
if x==y:
return
if self.ch[x] < self.ch[y]: #y가 애가 더 많으면
self.ch[y] += 1
self.parent[x] = y
else:
self.ch[x] += 1
self.parent[y] = x
disj = DisjointSet(N+1)
for i in range(N):
adj[i] = list(map(int,input().split()))
a,b,c = map(int,input().split())
for i in range(N):
for j in range(N):
if adj[i][j]:
disj.union(i+1,j+1)
# print(disj.parent)
# if (disj.find_parent(a) == disj.find_parent(b)) and (disj.find_parent(b) == disj.find_parent(c)):
# print("YES")
# else:
# print("NO")
if len(set([disj.parent[i] for i in [a,b,c]]))==1:
print("YES")
else:
print("NO")
왜 런타임 에러가 나는지 모르겠다.
'개발 > PYTHON 알고리즘 연습' 카테고리의 다른 글
2020 KAKAO BLIND RECRUITMENT : 자물쇠와 열쇠 (Python) (0) | 2020.05.08 |
---|---|
2020 KAKAO BLIND RECRUITMENT : 문자열 압축 (Python) (0) | 2020.05.08 |
[파이썬] 백준 9019번 : DSLR (0) | 2020.02.15 |
[파이썬] 백준 13913 : 숨바꼭질 4 (0) | 2020.02.13 |
[파이썬] 백준 9252 : LCS 2 (0) | 2020.02.13 |
댓글