코딩테스트/백준

[파이썬]1260_DFSBFS_S2

sunNprize 2022. 4. 7. 16:01
from collections import deque

n, m, v = map(int, input().split())
graph = [[0 for i in range(n + 1)] for j in range(n + 1)]
visited_d = [0] * (n + 1)
visited_b = [0] * (n + 1)

for i in range(m):
      line = list(map(int, input().split()))
      graph[line[0]][line[1]] = 1
      graph[line[1]][line[0]] = 1


def dfs(graph, v, visited_d):
      visited_d[v] = 1
      print(v, end=" ")
      for i in range(len(graph[v])):
            if visited_d[i] != 1 and graph[v][i] == 1:
                  dfs(graph, i, visited_d)


def bfs(graph, v, visited_b):
      visited_b[v] = 1
      queue = deque([v])
      
      while queue:
            v = queue.popleft()
            print(v, end=" ")
            
            for i in range(len(graph[v])):
                  if visited_b[i] != 1 and graph[v][i] == 1:
                        queue.append(i)
                        visited_b[i] = 1


dfs(graph, v, visited_d)
print()
bfs(graph, v, visited_b)

- DFS >> visited활용 스택개념

-BFS - dequeue() 로 큐에 값을 담아서 해당 값을 popleft() ..