[λ°±μ€€-6118] μˆ¨λ°”κΌ­μ§ˆ / Python

πŸ“š Problem Solving/Baekjoon

 

6118번: μˆ¨λ°”κΌ­μ§ˆ

μž¬μ„œκΈ°λŠ” μˆ˜ν˜€λ‹ˆμ™€ ꡐ외 농μž₯μ—μ„œ μˆ¨λ°”κΌ­μ§ˆμ„ ν•˜κ³  μžˆλ‹€. 농μž₯μ—λŠ” 헛간이 많이 λ„λ €μžˆκ³  μž¬μ„œκΈ°λŠ” κ·Έ 쀑에 ν•˜λ‚˜μ— μˆ¨μ–΄μ•Ό ν•œλ‹€. ν—›κ°„μ˜ κ°œμˆ˜λŠ” N(2 <= N <= 20,000)개이며, 1 λΆ€ν„° μƒŒλ‹€κ³  ν•˜μž.   재

www.acmicpc.net

import sys
import heapq

input = sys.stdin.readline
INF = int(1e9)

n, m = map(int, input().split())
graph = [[] for _ in range(n + 1)]
distance = [-1] * (n + 1)


def dijkstra(start):
    q = []
    heapq.heappush(q, (0, start))
    distance[start] = 0
    while q:
        dist, now = heapq.heappop(q)
        for i in graph[now]:
            if distance[i] == -1:
                distance[i] = dist + 1
                heapq.heappush(q, (distance[i], i))


for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

dijkstra(1)

print(distance.index(max(distance)), max(distance), distance.count(max(distance)))

 

ν•΄μ„€

λ‹€μ΅μŠ€νŠΈλΌλ‘œ ν•΄κ²°ν–ˆλ‹€. 어렡지 μ•Šμ€ λ¬Έμ œμ˜€λŠ”λ° μ‹œμž‘ 정점을 1둜 섀정을 ν•΄μ„œ 100% ν‹€λ ΈμŠ΅λ‹ˆλ‹€κ°€ λ–΄λ‹€..πŸ˜‚ μ‹œμž‘ 정점을 0으둜 μ„€μ •ν•΄μ€˜μ•Ό ν•œλ‹€.