📌 문제
💯 정답
import sys
input = sys.stdin.readline
def dfs(graph, v, visit):
visit[v] = 1
for i in graph[v]:
if visit[i] == 0:
dfs(graph, i, visit)
return True
n = int(input())
p = int(input())
graph = [[] for _ in range(n+1)]
for _ in range(p):
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
visit = [0] * (n+1)
dfs(graph, 1, visit)
print(sum(visit) - 1)
📝 설명
• 우선 입력받은 값을 가지고 인접 노드 그래프를 생성하는 것이 가장 중요한 문제였다.
• 이후 방문을 체크하는 리스트를 만들어 1부터 시작하는 노드와 연결된 모든 노드를 방문처리한다.
• (방문 처리한 노드들의 총 합 - 1)을 하면 1을 제외한 1과 연결된 노드들의 수를 구할 수 있다.
🙏 참고
👉 [백준] 2606번 : 바이러스 / DFS / 파이썬 Python