結果
問題 |
No.1928 Make a Binary Tree
|
ユーザー |
![]() |
提出日時 | 2025-04-15 22:34:42 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,421 bytes |
コンパイル時間 | 1,079 ms |
コンパイル使用メモリ | 81,664 KB |
実行使用メモリ | 124,768 KB |
最終ジャッジ日時 | 2025-04-15 22:36:59 |
合計ジャッジ時間 | 16,613 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 WA * 33 |
ソースコード
import sys from collections import deque def main(): n = int(sys.stdin.readline()) if n == 1: print(1) return adj = [[] for _ in range(n + 1)] for _ in range(n - 1): x, y = map(int, sys.stdin.readline().split()) adj[x].append(y) adj[y].append(x) parent = [0] * (n + 1) depth = [0] * (n + 1) visited = [False] * (n + 1) q = deque([1]) visited[1] = True parent[1] = None while q: u = q.popleft() for v in adj[u]: if not visited[v] and v != parent[u]: parent[v] = u depth[v] = depth[u] + 1 visited[v] = True q.append(v) nodes = [i for i in range(2, n + 1)] nodes.sort(key=lambda x: -depth[x]) children_count = [0] * (n + 1) next_available = [0] * (n + 1) for i in range(1, n + 1): next_available[i] = parent[i] if parent[i] is not None else None count = 0 for v in nodes: u = parent[v] path = [] current = u while current is not None and children_count[current] >= 2: path.append(current) current = next_available[current] for node in path: next_available[node] = current if current is not None: children_count[current] += 1 count += 1 print(1 + count) if __name__ == "__main__": main()