Submission #24470146


Source Code Expand

import sys
from collections import defaultdict, deque

def calc_dp(i, parent=-1):
  global children, dp_b, dp_w, mod
  if children[i] == [parent]: # bottom case
    return 1, 1

  result_w = 1
  result_b = 1
  for j in children[i]:
    if j == parent:
      continue
    result_w *= (dp_w[j] + dp_b[j])
    result_b *= dp_w[j]
    result_w %= mod
    result_b %= mod

  return result_b, result_w

def main(f):
  global children, dp_b, dp_w, mod
  mod = 10**9 + 7
  N = int(f.readline())
  children = [[] for _ in range(N+1)]
  dp_b = [None] * (N+1) # db_b[i] : 親が Black の場合の i 以下のサブツリーの場合の数
  dp_w = [None] * (N+1) # db_w[i] : 親が Black の場合の i 以下のサブツリーの場合の数
  for _ in range(N-1):
    x, y = list(map(int, f.readline().split()))
    children[y].append(x)
    children[x].append(y)

  # 下から順に処理するためのキュー tree_order を用意する
  tree_order = deque()
  q = deque()
  q.append((1, -1))
  while q:
    i, parent = q.pop()
    tree_order.append((i, parent))
    for j in children[i]:
      if j == parent:
        continue
      q.append((j, i))

  # tree_order を右から順に処理する
  while tree_order:
    i, parent = tree_order.pop()
    dp_b[i], dp_w[i] = calc_dp(i, parent) # dp_b[i], dp_w[i] を計算する関数

  print((dp_b[1] + dp_w[1]) % mod)

main(sys.stdin)

Submission Info

Submission Time
Task P - Independent Set
User enakai
Language PyPy3 (7.3.0)
Score 100
Code Size 1435 Byte
Status AC
Exec Time 248 ms
Memory 94340 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 20
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15
Case Name Status Exec Time Memory
0_00 AC 126 ms 64032 KiB
0_01 AC 56 ms 64192 KiB
0_02 AC 57 ms 64512 KiB
0_03 AC 60 ms 64660 KiB
1_00 AC 55 ms 64724 KiB
1_01 AC 247 ms 93356 KiB
1_02 AC 174 ms 93556 KiB
1_03 AC 182 ms 93336 KiB
1_04 AC 180 ms 92080 KiB
1_05 AC 197 ms 91652 KiB
1_06 AC 187 ms 92040 KiB
1_07 AC 214 ms 94340 KiB
1_08 AC 223 ms 93908 KiB
1_09 AC 234 ms 93144 KiB
1_10 AC 234 ms 93588 KiB
1_11 AC 222 ms 92640 KiB
1_12 AC 233 ms 91868 KiB
1_13 AC 240 ms 93256 KiB
1_14 AC 242 ms 93512 KiB
1_15 AC 248 ms 93496 KiB