문제
24480번: 알고리즘 수업 - 깊이 우선 탐색 2
첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양
www.acmicpc.net
작성한 코드
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
N, M, R = map(int, input().split())
graph = [[] for _ in range(N+1)]
visited = [0] * (N+1)
order = 1
for _ in range(M):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
for i in range(N+1):
graph[i].sort(reverse = True)
def dfs(v):
global order
visited[v] = order
for i in graph[v]:
if visited[i] == 0:
order += 1
dfs(i)
dfs(R)
for i in range(1, N+1):
print(visited[i])
→ 이전 문제와 풀이 방식은 동일하나, 오름차순으로 방문하냐 vs 내림차순으로 방문하냐 의 차이이다.
→ 해당 문제는 내림차순으로 방문하기 때문에 : sort(reverse = True) 해주면 된다.
cf.) 이전 풀이 방식 참고
백준[24479] - 알고리즘 수업 (깊이 우선 탐색 1)
문제 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며
bingguel.tistory.com
'💻 코딩테스트 > 백준' 카테고리의 다른 글
백준[24479] - 알고리즘 수업 (너비 우선 탐색 2) (0) | 2023.02.28 |
---|---|
백준[24444] - 알고리즘 수업 (너비 우선 탐색 1) (0) | 2023.02.28 |
백준[24479] - 알고리즘 수업 (깊이 우선 탐색 1) (0) | 2023.02.28 |
백준[1436] - 영화감독 숌 (0) | 2023.02.14 |
백준[7568] - 덩치 (0) | 2023.02.13 |