yha97 2023. 4. 24. 14:08

날짜 : 2023. 04. 24

사용 언어 : python

 

문제

 

 

코드

import sys
sys.setrecursionlimit(10**9)
n, m, r = map(int, sys.stdin.readline().split())  # 정점의 수, 간선의 수, 시작 정점
graph = [[] for _ in range(n+1)]
visited = [0] * (n + 1)
idx = 0


def dfs(node):
    global idx
    idx += 1
    #print(node)
    visited[node] = idx  # 방문처리
    for i in graph[node]:
        if visited[i] == 0:  # 방문하지 않은 경우
            dfs(i)
        else: continue


for _ in range(m):
    a, b = map(int, sys.stdin.readline().split())
    graph[a].append(b)
    graph[b].append(a)
for i in range(n):
    graph[i].sort()
#print(graph)

dfs(r)
#print(visited)

for i in range(1, n+1):
    print(visited[i])

 

 

풀이

- 전역변수(globa)와 DFS를 활용한 문제였다.

- 방문순서를 단지 parameter로 설정한다면 중복해서 나타나는 경우가 발생하기 때문에 방문순서를 전역변수화 함으로써 갱신한다.

 

 

알게된 점

- 전역변수 설정을 바로 생각해내지 못해 시간을 허비했다.

 

 

 

참고 사이트