import sys
from collections import deque
def input():
return sys.stdin.readline()
N,M = map(int,input().split())
sams = list(map(int,input().split()))
visited_set = set(sams)
queue = deque()
for sam in sams:
queue.append((sam,0))
cnt = 0
result = 0
while queue:
cur_node,dis = queue.popleft()
result += dis
cnt += 1
if cnt == N+M:
break
for next_node in [cur_node+1,cur_node-1]:
if next_node not in visited_set:
visited_set.add(next_node)
queue.append((next_node,dis+1))
print(result)
이 문제는 샘터를 기준으로 bfs를 하면서, 방문 표시를 해주면 되는 문제였다.
종료조건은 샘터의 개수와 집의 개수를 합친 개수가 되면 종료가 되게 하면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 2026 소풍 (0) | 2021.09.03 |
---|---|
[BOJ/백준] 19535 ㄷㄷㄷㅈ (0) | 2021.09.03 |
[BOJ/백준] 17143 낚시왕 (0) | 2021.09.03 |
[BOJ/백준] 17090 미로 탈출하기 (0) | 2021.09.03 |
[BOJ/백준] 3108 로고 (0) | 2021.09.03 |