💡문제접근
- BFS 기본 코드 + 별도로 오름차순 정렬 수행
- 노드의 방문 깊이와 노드의 방문 여부를 둘 다 고려해야함
💡코드(메모리 : 59416KB, 시간 : 560ms)
from collections import deque
import sys
input = sys.stdin.readline
N, M, R = map(int, input().strip().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
u, v = map(int, input().strip().split())
graph[u].append(v)
graph[v].append(u)
for i in range(len(graph)):
graph[i].sort()
visited = [-1] * (N+1)
sequence = [0] * (N+1)
idx = 1
def BFS(x):
global idx
queue = deque()
queue.append(x)
visited[x] = 0
sequence[x] = 1
while queue:
v = queue.popleft()
for i in graph[v]:
if visited[i] == -1:
idx += 1
visited[i] = visited[v] + 1
sequence[i] = idx
queue.append(i)
BFS(R)
Sum = 0
for i in range(N+1):
Sum += visited[i] * sequence[i]
print(Sum)
💡소요시간 : 9m