본문 바로가기
Algorithm(BOJ, Python)/BFS&DFS

[백준_2606] 바이러스 python

by kurooru 2022. 8. 23.

오늘은 좀 쉬어가자,,

# com_num 입력
com_num = int(input())

# con_num 입력
con_num = int(input())

# start_points, end_points 설계 및 입력
start_points, end_points = [], []
for _ in range(con_num):
    s, e = map(int, input().split())
    start_points.append(s)
    end_points.append(e)

# dfs(vertex)
def dfs(vertex):
    
    global ans

    for curr_v in range(1, com_num + 1):
        if graph[vertex][curr_v] and not visited[curr_v]:
            ans += 1
            visited[curr_v] = 1
            dfs(curr_v)

# 설계
# graph(연결 관계 표현)
graph = [
    [0] * (com_num + 1)
    for _ in range(com_num + 1)
]

# graph 채워넣기
for sp, ep in zip(start_points, end_points):
    graph[sp][ep] = 1
    graph[ep][sp] = 1

# visited
visited = [ 0 for _ in range(com_num + 1) ]

# root_vertex
root_vertex = 1
# 방문 처리 해 주고
visited[root_vertex] = 1
# ans
ans = 0

# dfs 돌려주기
dfs(root_vertex)
# 출력
print(ans)