Submission #896206

#TimeUsernameProblemLanguageResultExecution timeMemory
896206juliany2Meetings 2 (JOI21_meetings2)C++17
4 / 100
4 ms608 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) (x).begin(), (x).end()

const int N = 17;
int n;
vector<int> adj[N];
int sz[N], ans[N];
int cnt, cur;

void dfs(int v = 1, int p = 0) {
    for (int u : adj[v]) {
        if (u != p) {
            dfs(u, v);
            sz[v] += sz[u];
        }
    }

    if (sz[v] == cnt / 2)
        cur++;
}

int main() {
    cin.tie(0)->sync_with_stdio(false);

    cin >> n;

    for (int i = 1; i < n; i++) {
        int u, v;
        cin >> u >> v;

        u--, v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    for (int mask = 1; mask < (1 << n); mask++) {
        cnt = __builtin_popcount(mask), cur = 0;

        if (cnt % 2)
            continue;

        for (int i = 0; i < n; i++)
            sz[i] = mask >> i & 1;

        dfs();

        ans[cnt] = max(ans[cnt], cur + 1);
    }

    for (int i = 1; i <= n; i++)
        cout << (i % 2 ? 1 : ans[i]) << '\n';

    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...