結果
| 問題 | No.827 総神童数 | 
| コンテスト | |
| ユーザー |  silversmith | 
| 提出日時 | 2019-05-14 00:04:29 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 485 ms / 2,000 ms | 
| コード長 | 867 bytes | 
| コンパイル時間 | 197 ms | 
| コンパイル使用メモリ | 81,968 KB | 
| 実行使用メモリ | 105,984 KB | 
| 最終ジャッジ日時 | 2024-07-08 11:30:52 | 
| 合計ジャッジ時間 | 11,658 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 36 | 
ソースコード
N = int(input())
prime = 10**9 + 7
f = [1] * (N + 1)
for i in range(1, N + 1):
    f[i] = i * f[i-1] % prime
f[0] =f[N]
def inv(x,prime):
    _x = x
    inv = 1
    k = prime -2
    while k > 0:
        if k % 2 == 1:
            inv = (inv * _x) % prime
        _x = (_x * _x) % prime   
        k = int(k /2)
    return inv
#for i in range(1,N+1):
#    f[i] = f[0] * inv(i, prime) % prime
f = [f[0] * inv(i,prime) for i in range(N+1)]
a = [0] * (N + 1)
flag = [False] * (N+1)
edge = [[] for _ in range(N + 1)]
for _ in range(N-1):
    u, v = map(int, input().split())
    edge[u].append(v)
    edge[v].append(u)
q = [1]
a[1] = 1
while len(q) > 0:
    v = q.pop()
    flag[v] = True
    for child in edge[v]:
        if flag[child] == False:
            q.append(child)
            a[child] = a[v] + 1
print(int(sum([f[a[i]] for i in range(1, N+1)])) % prime)
            
            
            
        