結果
| 問題 |
No.827 総神童数
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-20 18:43:50 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 516 ms / 2,000 ms |
| コード長 | 1,110 bytes |
| コンパイル時間 | 176 ms |
| コンパイル使用メモリ | 82,428 KB |
| 実行使用メモリ | 131,080 KB |
| 最終ジャッジ日時 | 2025-03-20 18:44:06 |
| 合計ジャッジ時間 | 11,917 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 36 |
ソースコード
MOD = 10**9 + 7
def main():
import sys
input = sys.stdin.read
data = input().split()
idx = 0
N = int(data[idx])
idx += 1
edges = [[] for _ in range(N + 1)]
for _ in range(N - 1):
u = int(data[idx])
v = int(data[idx + 1])
edges[u].append(v)
edges[v].append(u)
idx += 2
# Precompute factorials
fact = [1] * (N + 1)
for i in range(1, N + 1):
fact[i] = fact[i - 1] * i % MOD
# BFS to compute depth of each node
from collections import deque
depth = [0] * (N + 1)
visited = [False] * (N + 1)
q = deque()
q.append(1)
visited[1] = True
depth[1] = 1
while q:
u = q.popleft()
for v in edges[u]:
if not visited[v]:
visited[v] = True
depth[v] = depth[u] + 1
q.append(v)
sum_inv = 0
for i in range(1, N + 1):
d = depth[i]
sum_inv = (sum_inv + pow(d, MOD - 2, MOD)) % MOD
ans = fact[N] * sum_inv % MOD
print(ans)
if __name__ == '__main__':
main()
lam6er