結果
| 問題 |
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))