
아카이브 용으로...
설명은 나중에...
import sys
n, m = map(int, sys.stdin.readline().split())
knows = list(map(int, sys.stdin.readline().split()))
k = knows[0]
parent = [i for i in range(n+1)]
parties = []
def find(x):
if parent[x] != x:
parent[x] = find(parent[x])
return parent[x]
def union (a, b):
pA = find(a)
pB = find(b)
if pA != pB:
parent[pB] = pA
for _ in range(m):
parties.append(list(map(int, sys.stdin.readline().split()))[1:])
for party in parties:
f = party[0]
for person in party[1:]:
union(f, person)
know_roots = set(find(person) for person in knows[1:])
result = 0
for party in parties:
if all(find(person) not in know_roots for person in party):
result += 1
print(result)
유니온 파인드라는 멋진 개념을 알게 됐다
그래프 탐색은 좀만 게을리 하면 이.. 이게 무슨 그래프인데 하게 되는 듯...