ABC 149 F Surrounded Nodes【Python】
問題はこちら。
import sys
sys.setrecursionlimit(10**9)
MOD = 10**9 + 7
N = int(input())
conn = [[] for _ in range(N)]
for _ in range(N - 1):
A, B = map(int, input().split())
A -= 1; B -= 1
conn[A].append(B)
conn[B].append(A)
checked = [False]*N
size = [1]*N
def dfs(x):
if checked[x]:
return
checked[x] = True
for y in conn[x]:
if not checked[y]:
dfs(y)
size[x] += size[y]
dfs(0)
ans = 0
for i in range(1, N):
x = size[i]
ans += (pow(2, x, MOD) - 1) * (pow(2, N - x, MOD) - 1)
ans += pow(2, N, MOD) - 1 - N * pow(2, N - 1, MOD)
ans *= pow(pow(2, N, MOD), MOD - 2, MOD)
ans %= MOD
print(ans)
この記事が気に入ったらサポートをしてみませんか?