DFS - 바이러스[2606번]
2022. 4. 9. 00:00ㆍ2022/BaekJoon_알고리즘
def dfs(i):
for idx in range(1, len(graph[i])):
if graph[i][idx] == 1 and idx not in visited:
visited.append(idx)
dfs(idx)
n = int(input())
m = int(input())
graph = [[0]*(n+1) for _ in range(n+1)]
for _ in range(m):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
visited = [1]
dfs(1)
print(len(visited)-1)
해당 문제는 DFS 문제로 회귀함수를 이용해 1번을 시작으로 연결된 컴퓨터들을 visited로 기록함으로써 구할 수 있다.
-> 1번과 직/간접적으로 연결된 컴퓨터의 개수만 구하면 되므로 visited로 연결된 컴퓨터들을 체크하면서 구하면 됨
'2022 > BaekJoon_알고리즘' 카테고리의 다른 글
DFS - 연결 요소의 개수[11724번] (0) | 2022.04.18 |
---|---|
DFS - DFS와BFS[1260번] (0) | 2022.04.17 |
Dynamic Programming(DP) - 정수 삼각형[1932] (0) | 2022.04.07 |
Dynamic Programming(DP) - RGB거리[1149] (0) | 2022.04.06 |
Dynamic Programming(DP) - 2×n 타일링[11726] (0) | 2022.04.05 |