Submission #4330633


Source Code Expand

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <set>
#include <map>
typedef long long ll;
typedef unsigned int uint;
using namespace std;
typedef pair<ll, int> P;

const ll M = 1000000007LL;
vector <int> edge[1005];
ll dp[1005], C[1005][1005];

void comb_table(int N) {
    for (int i = 0; i <= N; i++) {
        C[i][0] = C[i][i] = 1LL;
        for (int j = 1; j < i; j++) {
            C[i][j] = (C[i-1][j-1] + C[i-1][j]) % M;
        }
    }
}

int dfs(int cur, int par) {
    dp[cur] = 1;
    int sz = 0;
    for (auto i : edge[cur]) {
        if (i == par) continue;
        int res = dfs(i, cur) + 1;
        dp[cur] = dp[cur] * dp[i] % M * C[sz + res][res] % M;
        sz += res;
    }
    return sz;
}

int main() {
    int n;
    cin >> n;

    for (int i = 1; i < n; i++) {
        int a, b;
        cin >> a >> b;
        a--; b--;
        edge[a].push_back(b);
        edge[b].push_back(a);
    }

    comb_table(n);

    ll ans = 0LL;
    for (int i = 0; i < n; i++) {
        dfs(i, -1);
        ans = (ans + dp[i]) % M;
    }

    cout << ans * (M + 1) / 2 % M << "\n";
    return 0;
}

Submission Info

Submission Time
Task N - 木
User veqcc
Language C++14 (GCC 5.4.1)
Score 5
Code Size 1292 Byte
Status AC
Exec Time 24 ms
Memory 7552 KB

Judge Result

Set Name All
Score / Max Score 5 / 5
Status
AC × 9
Set Name Test Cases
All 00, 01, 02, 03, 04, 05, 06, 90, 91
Case Name Status Exec Time Memory
00 AC 24 ms 7552 KB
01 AC 16 ms 7424 KB
02 AC 17 ms 7424 KB
03 AC 17 ms 7424 KB
04 AC 17 ms 7424 KB
05 AC 17 ms 7424 KB
06 AC 18 ms 7424 KB
90 AC 1 ms 256 KB
91 AC 1 ms 256 KB