1 solutions
-
0
C++ :
#include<bits/stdc++.h> using namespace std; const int N = 200000; const long long MOD = 1000000000; int n,u,v,d[N]; long long fct[N],p[N],s[N],ans; int main(){ cin.tie(0)->sync_with_stdio(0); cin >> n; fct[0] = 1; for(int i = 1;i < N;i ++) fct[i] = fct[i - 1] * i % MOD;//预处理 i 的阶乘 for(int i = 1;i < n;i ++){ cin >> u >> v; d[u] ++,d[v] ++;//统计度数 } p[0] = s[n + 1] = 1; for(int i = 1;i <= n;i ++) p[i] = p[i - 1] * fct[d[i] - 1] % MOD;//度数减一的阶乘的前缀和 for(int i = n;i;i --) s[i] = s[i + 1] * fct[d[i] - 1] % MOD;//度数减一的阶乘的后缀和 for(int i = 1;i <= n;i ++) ans = (ans + p[i - 1] * s[i + 1] % MOD * fct[d[i]]) % MOD; printf("%lld\n",ans); return 0; }
- 1
Information
- ID
- 141
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By