본문 바로가기

프로그래밍

[백준 1260 파이썬] DFS와 BFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 1. dfs and bfs
# 2. python  716 ms
 
p, e, s = map(int, input().split())     # 점, 선, 시작점
tree = [[] for _ in range(p+1)]         # tree를 이용해서 저장
 
 
for i in range(int(e)):       # Get input
    a, b = map(int, input().split())
    tree[a].append(b)
    tree[b].append(a)         # 양방향
 
for i in range(p+1):         # sort tree
    tree[i].sort()
 
 
def dfs(queue, visited):
    if len(visited) == p:
        return
    node = queue.pop()
    print(node, end=" ")
    visited.append(node)
 
    for i in tree[node]:
        if i not in visited:
            queue.append(i)
            dfs(queue, visited)
 
def bfs():
    queue = [s]
    visited =[s]
    print(s, end=" ")
 
    while queue:
        node = queue.pop(0)
        for next in tree[node]:
            if next not in visited:
                print(next, end=" ")
                visited.append(next)
                queue.append(next)
 
dfs([s],[])
print()
bfs()