백준 2606번-BFS, DFS solution (Python)

BFS 풀이(1) - deque, list 사용

from collections import deque
N = int(input())
matrix = [0] * (N+1)
computer = [[] for _ in range(N+1)]

for i in range(int(input())):
    a, b = map(int, input().split())
    computer[a].append(b)
    computer[b].append(a)

matrix[1] = 1
q = deque([1])
while q:
    x = q.popleft()
    for i in range(len(computer[x])):
        if matrix[computer[x][i]] == 0:
            q.append(computer[x][i])
            matrix[computer[x][i]] = 1

print(sum(matrix) - 1)      

BFS 풀이(2) - dictionary 사용

from sys import stdin
input = stdin.readline
computer = {}
for i in range(int(input())):
    computer[i+1] = set()
for j in range(int(input())):
    a, b = map(int, input().split())
    computer[a].add(b)
    computer[b].add(a)

def BFS(start, computer):
    q = [start]
    while q:
        for i in computer[q.pop()]:
            if i not in visited:
                visited.append(i)
                q.append(i)

visited = []    
BFS(1, computer)
print(len(visited) - 1) 

DFS 풀이 - dictionary, 재귀 사용, BFS 풀이(2)와 비슷

from sys import stdin
input = stdin.readline
computer = {}
for i in range(int(input())):
    computer[i+1] = set()    
for j in range(int(input())):
    a, b = map(int, input().split())
    computer[a].add(b)
    computer[b].add(a)

def DFS(start, computer):
    for i in computer[start]:
        if i not in visited:
            visited.append(i)
            DFS(i, computer)

visited = []
DFS(1, computer)
print(len(visited) - 1)

문제 출처 백준2606번

좋은 웹페이지 즐겨찾기