Submission #25089553


Source Code Expand

import sys, copy, heapq
from collections import defaultdict, deque


def main(f):
  mod = 10**9 + 7
  N = int(f.readline())
  children = [[] for _ in range(N+1)]
  for _ in range(N-1):
    x, y = map(int, f.readline().split())
    children[x].append(y)
    children[y].append(x)

  dp = [defaultdict(int) for _ in range(N+1)]
  q = deque()
  q.append((1, 0))
  while q:
    i, parent = q.pop()
    if i < 0:
      if children[-i] == [parent]:
        dp[-i]['b'] = 1
        dp[-i]['w'] = 1
        continue
      result_w = 1
      result_b = 1
      for j in children[-i]:
        if j == parent:
          continue
        result_w *= (dp[j]['b'] + dp[j]['w']) # 自分は while
        result_b *= dp[j]['w'] # 自分は black
        result_w %= mod
        result_b %= mod
      dp[-i]['b'] += result_b
      dp[-i]['w'] += result_w
      continue
    q.append((-i, parent))
    for j in children[i]:
      if j == parent:
        continue
      q.append((j, i))

  print((dp[1]['w']+dp[1]['b'])%mod)

main(sys.stdin)

Submission Info

Submission Time
Task P - Independent Set
User enakai
Language PyPy3 (7.3.0)
Score 100
Code Size 1066 Byte
Status AC
Exec Time 300 ms
Memory 128104 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 82 ms 68348 KiB
0_01 AC 62 ms 68500 KiB
0_02 AC 61 ms 68576 KiB
0_03 AC 60 ms 68688 KiB
1_00 AC 61 ms 68596 KiB
1_01 AC 283 ms 127712 KiB
1_02 AC 222 ms 117088 KiB
1_03 AC 246 ms 128104 KiB
1_04 AC 243 ms 123172 KiB
1_05 AC 245 ms 120784 KiB
1_06 AC 240 ms 120260 KiB
1_07 AC 258 ms 120244 KiB
1_08 AC 262 ms 116640 KiB
1_09 AC 259 ms 118548 KiB
1_10 AC 264 ms 118584 KiB
1_11 AC 284 ms 124792 KiB
1_12 AC 262 ms 116276 KiB
1_13 AC 295 ms 125416 KiB
1_14 AC 300 ms 125224 KiB
1_15 AC 289 ms 126748 KiB