結果
問題 |
No.827 総神童数
|
ユーザー |
![]() |
提出日時 | 2019-06-26 21:51:37 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 207 ms / 2,000 ms |
コード長 | 657 bytes |
コンパイル時間 | 836 ms |
コンパイル使用メモリ | 73,980 KB |
最終ジャッジ日時 | 2025-01-07 05:09:38 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
#include <iostream> #include <vector> using namespace std; typedef long long ll; vector<ll> G[200010]; ll d[200010],mod = 1000000007,inv[200010],ans = 0; void solve(){ inv[1] = 1; for(int i=2;i<=200000;i++){ inv[i] = mod - (mod/i)*inv[mod%i]%mod; } } void dfs(int s, int p){ for(int v:G[s]){ if(v==p) continue; d[v] = d[s] + 1; dfs(v,s); } } int main(){ int i,n; cin >> n; for(i=0;i<n-1;i++){ int a,b; cin >> a >> b; a--; b--; G[a].push_back(b); G[b].push_back(a); } d[0] = 1; dfs(0,-1); solve(); ll f = 1; for(i=2;i<=n;i++){ (f *= i) %= mod; } for(i=0;i<n;i++){ (ans += f*inv[d[i]]%mod) %= mod; } cout << ans << endl; }