๋ฌธ์
๋ฐฑ์ค ์จ๋ผ์ธ ์ ์ง - 6118๋ฒ
ํ์ด ๊ณผ์
์์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ ์ค ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
์ ํ์ฉํ์ฌ ํ ์ ์ ์ผ๋ก๋ถํฐ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ค์,
๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ์ ์ ์ ์ฐพ์์ฃผ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ตฌํ์ ํธ์๋ฅผ ์ํด์ dist
๋ฐฐ์ด์ ๊ฑฐ๋ฆฌ๊ฐ๊ณผ ์ ์ ๋ฒํธ์์ผ๋ก ์ ๋ ฌํ์ฌ ๋ต์ ๊ตฌํ์ต๋๋ค.
์ฝ๋
import sys
import heapq
INF = sys.maxsize
N, M = list(map(int, sys.stdin.readline().split()))
adj = [[] for _ in range(N+1)]
for _ in range(M):
frm, to = list(map(int, sys.stdin.readline().split()))
adj[frm].append(to)
adj[to].append(frm)
def dijkstra():
pq = []
dist = [INF for _ in range(N+1)]
dist[1] = 0
heapq.heappush(pq, (0, 1))
while pq:
cost, here = heapq.heappop(pq)
if dist[here] < cost:
continue
for there in adj[here]:
next = cost + 1 # ๊ฐ ์ ์ ์ฌ์ด์ ๊ฐ์ค์น๋ 1์ด๋ค.
if next < dist[there]:
dist[there] = next
heapq.heappush(pq, (next, there))
# ํ๊ฐ ๊ฐ์ฅ ๋จผ ๊ฒ์ ์ฐพ๋๋ค.
temp = list(zip(dist[1:], range(1, len(dist))))
temp = sorted(temp, key=lambda x: (-x[0], x[1]))
# ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ ํ๊ฐ ๊ฐ์๋ฅผ ์ฐพ๋๋ค.
same = 1
for d, _ in temp[1:]:
if d == temp[0][0]:
same += 1
return [temp[0][1], temp[0][0], same]
def solution():
ans = dijkstra()
return ' '.join(map(str, ans))
print(solution())
๋ฐ์ํ
'๐ algorithm > boj' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ 15684 - ์ฌ๋ค๋ฆฌ ์กฐ์ (0) | 2021.06.07 |
---|---|
BOJ 1781 - ์ปต๋ผ๋ฉด (0) | 2021.06.07 |
BOJ 2331 - ๋ฐ๋ณต์์ด (0) | 2021.06.07 |
BOJ 4889 - ์์ ์ ์ธ ๋ฌธ์์ด (0) | 2021.06.07 |
BOJ 4811 - ์์ฝ (0) | 2021.06.07 |
๐ฌ ๋๊ธ