結果
| 問題 |
No.1928 Make a Binary Tree
|
| コンテスト | |
| ユーザー |
ikoma
|
| 提出日時 | 2022-05-06 22:25:13 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,006 bytes |
| コンパイル時間 | 232 ms |
| コンパイル使用メモリ | 82,424 KB |
| 実行使用メモリ | 352,472 KB |
| 最終ジャッジ日時 | 2024-07-05 23:44:41 |
| 合計ジャッジ時間 | 11,358 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 WA * 22 TLE * 1 -- * 23 |
ソースコード
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)
if "pypyjit" in sys.builtin_module_names:
import pypyjit
pypyjit.set_param("max_unroll_recursion=-1")
N=int(input())
edge = [[] for _ in range(N)]
XY=[list(map(int,input().split())) for _ in range(N-1)]
for x,y in XY:
x,y=x-1,y-1
edge[x].append(y)
edge[y].append(x)
visit = [0]*N
dnode = []
from heapq import *
def dfs(v=0):
visit[v]=1
n_tree = []
del_lst = []
for to in edge[v]:
if visit[to]:continue
n,lst = dfs(to)
n_tree.append(n)
del_lst.extend(lst)
if len(n_tree)==0:
return 1,[]
if len(n_tree)==1:
if del_lst:
heapify(del_lst)
n = -heappop(del_lst)
else: n=0
return n+n_tree[0]+1,del_lst
if len(n_tree)<=2:
return sum(n_tree)+1,del_lst
n_tree.sort(reverse=True)
for i in n_tree[2:]:
del_lst.append(-i)
return sum(n_tree[:2])+1,del_lst
ans,dl = dfs()
print(ans)
ikoma