728x90
반응형
Python
import sys
input = sys.stdin.readline
people, party = map(int, input().split())
graph = [set() for _ in range(people+1)]
true = input()
true = int(true) if len(true) == 1 else list(map(int, true.split()))
if true == 0:
print(party)
sys.exit(0)
parties = []
for _ in range(party):
p = input()
parties.append(int(true) if len(p) == 1 else list(map(int, p.split())))
for p in parties:
for i in range(1, p[0]+1):
for j in range(1, p[0]+1):
if i != j:
graph[p[i]].add(p[j])
visit = [0]*(people+1)
for t in true[1:]:
stack = [t] # dfs
while stack:
x = stack.pop()
if visit[x] == 0:
visit[x] = 1
stack += list(graph[x])
ans = party
for p in parties:
for i in range(1, len(p)):
if visit[p[i]] == 1:
ans -= 1
break
print(ans)
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준][Python] 1504번 특정한 최단경로 - 그래프, BFS (0) | 2021.08.19 |
---|---|
[백준][Python] 1931번 회의실 배정 - DP (0) | 2021.08.16 |
[Python] 원형 큐 사용 방법 (0) | 2021.08.05 |
[Python] heapq 라이브러리 살펴보기 (0) | 2021.08.04 |
[백준][Python] 20301번 반전 요세푸스 - 원형 큐 (0) | 2021.08.04 |