흔히 알려진 최단경로 알고리즘에는 다익스트라 알고리즘이 있습니다. 다익스트라 알고리즘은 하나의 노드에서 다른 모든 노드로의 최단거리를 구할 때 사용하는 알고리즘입니다. 반면에, 플로이드-워셜 알고리즘은 모든 노드에서 다른 모든 노드까지의 최단거리를 구할 때 사용하는 알고리즘입니다. 플로이드-워셜 알고리즘을 구현하는 것은 매우 단순하기 때문에, 그래프 내에서 모든 거리정보가 필요할 때는 플로이드 알고리즘을 사용하는 것이 좋습니다.
n, m = map(int, input().split())
matrix = [[n]*n for _ in range(n)] # INF를 n으로 표현했습니다.
# 최단 거리는 노드의 개수보다 커질수 없기 때문입니다.
for _ in range(m):
a,b = map(int, input().split())
matrix[a-1][b-1] = matrix[b-1][a-1] = 1 # 연결된 노드끼리의 거리는 모두 1입니다.
# 무방향 그래프이므로 대각선 대칭으로 값을 입력합니다.
for i in range(n):
matrix[i][i] = 0 # 대각선을 0으로 초기화
for k in range(n):
for i in range(n):
for j in range(n):
if matrix[i][j] > matrix[i][k] + matrix[k][j]:
matrix[i][j] = matrix[i][k] + matrix[k][j]
result = []
for i in (matrix):
result.append(sum(i))
print(result.index(min(result))+1)