結果
問題 |
No.1484 木に数を書き込む問題 / Just Write Numbers! 2
|
ユーザー |
|
提出日時 | 2025-04-05 20:04:37 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 528 ms / 2,000 ms |
コード長 | 1,016 bytes |
コンパイル時間 | 661 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 107,940 KB |
最終ジャッジ日時 | 2025-04-05 20:04:50 |
合計ジャッジ時間 | 12,021 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
# https://yukicoder.me/problems/no/1484 from collections import deque MAX_INT = 10 ** 18 def bfs(N, next_nodes, start): queue = deque() dists = [MAX_INT] * N queue.append(start) dists[start] = 0 while len(queue) > 0: v = queue.popleft() for w in next_nodes[v]: if dists[w] == MAX_INT: dists[w] = dists[v] + 1 queue.append(w) return dists def main(): N = int(input()) next_nodes = [[] for _ in range(N)] for _ in range(N - 1): a, b = map(int, input().split()) next_nodes[a - 1].append(b - 1) next_nodes[b - 1].append(a - 1) dists = bfs(N, next_nodes, 0) max_dist = -MAX_INT max_dist_node = -1 for i in range(N): if dists[i] > max_dist: max_dist = dists[i] max_dist_node = i dists = bfs(N, next_nodes, max_dist_node) m = max(dists) answer = 2 * (N - 1) - m print(answer) if __name__ == "__main__": main()