結果
| 問題 | No.763 Noelちゃんと木遊び | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2023-01-29 02:13:50 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 585 ms / 2,000 ms | 
| コード長 | 527 bytes | 
| コンパイル時間 | 185 ms | 
| コンパイル使用メモリ | 12,160 KB | 
| 実行使用メモリ | 49,624 KB | 
| 最終ジャッジ日時 | 2025-03-22 10:42:04 | 
| 合計ジャッジ時間 | 9,961 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 22 | 
ソースコード
import sys
sys.setrecursionlimit(10**7)
N = int(input())
tree = [[] for _ in range(N)]
for _ in range(N-1):
    u, v = map(lambda x:int(x)-1, input().split())
    tree[u].append(v)
    tree[v].append(u)
dp = [[0] * N for _ in range(2)]
dp[0] = [1] * N
def dfs(v, p):
    for nv in tree[v]:
        if nv == p:
            continue
        dfs(nv, v)
        dp[0][v] += max(dp[0][nv]-1, dp[1][nv])   # eraseしない
        dp[1][v] += max(dp[0][nv], dp[1][nv])  # eraseする
dfs(0, -1)
print(max(dp[0][0], dp[1][0]))
            
            
            
        