[백준 1260-Graph] DFS와 BFS

CHOI YUN HO·2021년 5월 25일
0

알고리즘 문제풀이

목록 보기
36/63

📃 문제 설명

DFS와 BFS

[문제 출처 : 백준]

👨‍💻 해결 방법

그냥 DFS와 BFS에 대한 기본적인 문제였다.
따로 설명할게 없다..

입력받은 대로 그래프를 만든 후
dfs, bfs를 구현하여 결과를 구하면 된다..
끝 !

👨‍💻 소스 코드

from collections import deque

n, m, v = map(int, input().split())
graph = {}

for _ in range(m):
    a, b = input().split()
    a, b = int(a), int(b)
    if a in list(graph.keys()):
        if b not in graph[a]:
            graph[a].append(b)
    else:
        graph[a] = [b]

    if b in list(graph.keys()):
        if a not in graph[b]:
            graph[b].append(a)
    else:
        graph[b] = [a]

def dfs(v):
    stack = [v]
    visited = []

    while stack:
        node = stack.pop()
        if node not in visited:
            visited.append(node)
            if node in graph:
                temp = sorted(graph[node], reverse=True)
                stack.extend(temp)
    return visited


def bfs(v):
    queue = deque([v])
    visited = []

    while queue:
        node = queue.popleft()
        if node not in visited:
            visited.append(node)
            if node in graph:
                temp = sorted(graph[node])
                queue.extend(temp)
    return visited

print(*dfs(v))
print(*bfs(v))
profile
가재같은 사람

0개의 댓글