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 |
|
| 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 |