https://www.acmicpc.net/problem/1260
from collections import deque
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
data = input().split()
graph[int(data[0])].append(int(data[1]))
graph[int(data[1])].append(int(data[0]))
for i in range(n+1):
graph[i].sort()
dfs_visited = [False] * (n+1)
bfs_visited = [False] * (n+1)
def dfs(dfs_visited, v):
dfs_visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not dfs_visited[i]:
dfs(dfs_visited, i)
def bfs(bfs_visited, v):
bfs_visited[v] = True
queue = deque([v])
while queue:
q = queue.popleft()
print(q, end=' ')
for i in graph[q]:
if not bfs_visited[i]:
queue.append(i)
bfs_visited[i] = True
dfs(dfs_visited, v)
print()
bfs(bfs_visited, v)
그래프 번호가 1번부터 시작하기 때문에 리스트 크기를 편하게 n+1로 잡았다! (인덱스 0은 비어있음)
노드번호별로 그래프에 연결된 노드 넣어주고 그 안에서 정렬한 다음에 각각 dfs, bfs를 돌려주었다
아무리 봐도 틀린게 없어보이는데 자꾸 실패해서 화나서 밥 먹고 쉬다가 왔는데
알고 보니까 멍청하게 그래프 정렬할 때 포문을 n+1로 돌려야 하는데 n으로 돌려서 정렬이 다 안되어있었음,,
꼼꼼하게 확인해보자,,
'알고리즘 > 백준' 카테고리의 다른 글
백준 2667: 단지번호붙이기 (Python) (0) | 2022.01.31 |
---|---|
백준 2606: 바이러스 (Python) (0) | 2022.01.29 |
백준 13305: 주유소 (Python) (0) | 2022.01.21 |
백준 1789: 수들의 합 (Python) (0) | 2021.10.02 |
백준 1946: 신입 사원 (Python) (0) | 2021.09.30 |