문제 링크
문제 요약
사람 수, Contact 수(접촉 / 감염 수), 초기 감염자 번호가 주어집니다. 그리고 시간 순서대로 Contact 정보가 주어집니다.
예를 들어 1 2 가 주어지면 1번과 2번이 만났음을 의미합니다.
- 만약 1번이 감염된 상태였다면 2번도 감염됩니다.
- 만약 둘 다 비감염 상태라면, 아무 일도 일어나지 않습니다.
풀이
감염 여부를 Array / Dictionary 등으로 저장해두고, 순서대로 Contact를 처리하면 됩니다.
정답 코드
mii = lambda : [*map(int,inp().split())]
while 1:
m, n, p = mii()
if m == n == p == 0:
break
is_infected = [0] * (m + 1)
is_infected[p] = 1
for _ in range(n):
a, b = mii()
if is_infected[a] or is_infected[b]:
is_infected[a] = is_infected[b] = 1
print(sum(is_infected))