지민이가 거짓말쟁이로 되지 않고 과장된 이야기를 할 수 있는 파티의 개수의 최댓값을 출력하기
거짓말이 되는 조건
입력
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
truth = list(map(int, input().split()))
party = []
count = 0
if truth[0] == 0:
for _ in range(M):
non_use = list(map(int, input().split()))
print(M)
elif truth[0] > 0:
truth_participant = set(truth[1:])
truth_party_but_false_participant = set()
for _ in range(M):
participant = list(map(int, input().split()))
set_participant = set(participant[1:])
# 진실된 사람이 있는 경우
if len(truth_participant & set_participant) > 0:
# 진실 이야기를 이미 들은 사람들을 더해줌
truth_participant.update(set_participant)
# 없는 경우
else:
party.append(set_participant)
# 나중에 다시 재탐색 진행
print(len([i for i in party if len(i & truth_participant) == 0]))
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
truth = list(map(int, input().split()))
party = []
if truth[0] == 0:
for _ in range(M):
non_use = list(map(int, input().split()))
print(M)
elif truth[0] > 0:
truth_participant = set(truth[1:])
for _ in range(M):
set_participant = set(list(map(int, input().split()))[1:])
party.append(set_participant)
for _ in range(M):
for i, party_ in enumerate(party):
if truth_participant.intersection(party_):
truth_participant = truth_participant.union(party_)
print(len([i for i in party if not truth_participant.intersection(i)]))
여기서 각 for문을 여러번 돌려서 교차점을 체크해주지 않았기에 아까는 틀리고 지금은 맞게 되었다.