https://www.acmicpc.net/problem/1043

이 문제는 집합(set())을 이용하여 문제를 풀면 된다.
집합에서 다음의 메소드를 알아두자.
- add(): 집합에 원소 추가
 - update(): 집합에 원소 여러개 추가
 - set.union(a,b): a와 b집합의 합집합
 
=a|b- set.intersection(a,b): a와 b집합의 교집합
 
=a&b- set.difference(a,b): a와 b집합의 차집합
 
=a-b
import sys
input = sys.stdin.readline
n, m =map(int,input().split()) #사람 수, 파티 수 
know=set(input().split()[1:])
pnum=[]
cnt = 0
#파티 참가 정보 등록 
for i in range(m):
    pnum.append(set(input().split()[1:]))
#진실을 아는 사람 정보 등록 
for i in range(m):
    for party in pnum:
        if party &know: #진실을 아는 사람이 겹치면 know에 추가(교집합) 
            know.update(party) #집합에 여러개를 추가할때는 update함수 사용!      
for i in range(m):
    for t in pnum[i]:
        if t in know: #진실을 아는 사람이 있을 경우 cnt+=1
            cnt+=1
            break
print(m-cnt) #전체에서 진실만을 말해야하는 경우를 뺀다.