1 solutions

  • 0
    @ 2025-11-27 11:59:56

    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