백준 24480번 알고리즘 수업 - 깊이 우선 탐색 2
코드 풀이
import sys
sys.setrecursionlimit(10**6)
N, M, R = map(int, sys.stdin.readline().split(' '))
graph = [[] * (N + 1) for _ in range(N+1)]
for _ in range(M):
a, b = map(int, sys.stdin.readline().split(' '))
graph[a].append(b)
graph[b].append(a)
for i in range(1, N+1):
graph[i].sort(reverse=True)
visited = [0] * (N + 1)
def dfs(x):
global cnt
cnt += 1
visited[x] = 1
node_cnt[x] = cnt
for i in graph[x]:
if not visited[i]:
dfs(i)
node_cnt = [0] * (N + 1)
cnt = 0
dfs(R)
for i in node_cnt[1:]:
print(i)
- 24479번 문제에서
오름차순
조건이 내림차순
으로 바뀐 문제로 정렬을 내림차순으로 하는 것을 제외하곤 코드가 동일합니다.