結果
| 問題 |
No.1484 木に数を書き込む問題 / Just Write Numbers! 2
|
| ユーザー |
ygd.
|
| 提出日時 | 2021-04-22 20:47:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 743 bytes |
| コンパイル時間 | 141 ms |
| コンパイル使用メモリ | 82,576 KB |
| 実行使用メモリ | 115,228 KB |
| 最終ジャッジ日時 | 2024-07-04 06:31:59 |
| 合計ジャッジ時間 | 11,656 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 RE * 2 |
ソースコード
N = int(input())
G = [[] for _ in range(N)]
for i in range(N-1):
a,b = map(int,input().split())
a-=1;b-=1
G[a].append((1,b))
G[b].append((1,a))
def dfs(G,u,par): #頂点uから子に向かって最も遠い頂点とコストのペアを返す。
ret = [0,u] #[cost,頂点]が返す値。
for cost,v in G[u]:
if v == par:
continue
nxt = dfs(G,v,u)
nxt[0] += cost
ret = max(ret,nxt) #大きいほうを返す。
return ret
p = dfs(G,0,-1) #始点0からスタートして最も遠い頂点p[1]を求める。
q = dfs(G,p[1],-1) #p[1]は直径の端点なので、そこから最も遠い頂点q[1]を求める。
dia = q[0]#p[1]->q[1]間のコストq[0]が木の直径。
ans = dia + (N-1-dia)*2
print(ans)
ygd.