728x90
from sys import stdin
n,m = map(int, stdin.readline().split())
parent = [0]*(n+1)
def find_parent(a):
if a != parent[a]:
parent[a] = find_parent(parent[a])
return parent[a]
def union_parent(a,b):
pa = find_parent(a)
pb = find_parent(b)
if pa > pb:
parent[a] = b
else:
parent[b] = a
for i in range(1,n+1):
parent[i] = i
for i in range(n):
li = list(map(int,stdin.readline().split()))
for j in range(n):
if li[j] == 1:
union_parent(i+1,j+1)
plan = list(map(int,stdin.readline().split()))
res = True
for i in range(m-1):
if find_parent(i) != find_parent(i+1):
res = False
break
if res:
print("True")
else:
print("False")
n = 노드 수, m= 여행하려는 노드 수
parent[idx] = idx 번 노드의 부모 노드
출처: 동빈북
'프로그래밍 > 기억노트' 카테고리의 다른 글
[python] n진법 수를 10진법 수로, 10진법 수를 n진법 수로 (0) | 2020.10.16 |
---|---|
[python] 코딩 테스트 약점 정리 (0) | 2020.10.09 |
[python] 이진 탐색 알고리즘 (0) | 2020.09.11 |
[python] list 여러 조건으로 정렬하기 (sort by multiple field,attribute) (0) | 2020.09.11 |
[intelliJ] 인텔리제이 다중 커서 (multi-cursor) (1) | 2020.09.04 |