結果
問題 |
No.3113 The farthest point
|
ユーザー |
|
提出日時 | 2025-04-20 18:15:00 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,466 bytes |
コンパイル時間 | 559 ms |
コンパイル使用メモリ | 12,416 KB |
実行使用メモリ | 106,240 KB |
最終ジャッジ日時 | 2025-04-20 18:15:30 |
合計ジャッジ時間 | 29,632 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 WA * 13 |
ソースコード
def find_diameter(n, edges): # グラフの作成 graph = [[] for _ in range(n+1)] for u, v, w in edges: graph[u].append((v, w)) graph[v].append((u, w)) # 任意の頂点からの最長パスを見つける関数 def find_farthest(start): dist = [-float('inf')] * (n+1) dist[start] = 0 visited = [False] * (n+1) def dfs(node): visited[node] = True for neighbor, weight in graph[node]: if not visited[neighbor]: dist[neighbor] = max(dist[neighbor], dist[node] + weight) dfs(neighbor) dfs(start) # 最大距離とその頂点を見つける max_dist = -float('inf') max_node = start for i in range(1, n+1): if dist[i] > max_dist: max_dist = dist[i] max_node = i return max_node, max_dist # 頂点1から最も遠い頂点を見つける farthest_node, _ = find_farthest(1) # その頂点から最も遠い頂点を見つける _, max_distance = find_farthest(farthest_node) # 負の場合は0を返す(パスを選ばない) return max(0, max_distance) # 入力を読み込む n = int(input()) edges = [] for _ in range(n-1): u, v, w = map(int, input().split()) edges.append((u, v, w)) # 結果を出力 print(find_diameter(n, edges))