結果
問題 |
No.3113 The farthest point
|
ユーザー |
![]() |
提出日時 | 2025-04-18 21:43:09 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 723 ms / 2,000 ms |
コード長 | 1,046 bytes |
コンパイル時間 | 401 ms |
コンパイル使用メモリ | 82,376 KB |
実行使用メモリ | 133,984 KB |
最終ジャッジ日時 | 2025-04-18 21:43:28 |
合計ジャッジ時間 | 12,812 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
""" 真ん中に強すぎる負辺があるとまずい 全方位木dpか? """ from collections import deque N = int(input()) lis = [ [] for i in range(N) ] for i in range(N-1): u,v,w = map(int,input().split()) u -= 1 v -= 1 lis[u].append( (v,w) ) lis[v].append( (u,w) ) dp = [float("inf")] * N plis = [None] * N q = deque([0]) visit = [] dp[0] = 0 while q: v = q.popleft() visit.append(v) for nex,w in lis[v]: if dp[nex] == float("inf"): dp[nex] = dp[v] + w plis[nex] = v q.append(nex) dps = [i for i in dp] for v in list(reversed(visit)): for nex,w in lis[v]: if plis[v] != nex: dps[v] = max(dps[v] , dps[nex]) # print (dp,dps) ans = 0 for v in visit: cds = [] for nex,w in lis[v]: if plis[v] != nex: cds.append(dps[nex] - dp[v]) cds.sort() # print (cds) if len(cds) >= 1: ans = max(ans , cds[-1]) if len(cds) >= 2: ans = max(ans , cds[-1] + cds[-2]) print (ans)