Submission #656125

# Submission time Handle Problem Language Result Execution time Memory
656125 2022-11-06T10:20:50 Z Kahou Network (BOI15_net) C++14
63 / 100
10 ms 9940 KB
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int N = 1e5 + 50;
int n, sub[N], k, par[N], t;
vector<int> adj[N];
vector<int> vc[N];
set<pii> st;
vector<pii> out;

void dfs(int u, int p) {
        par[u] = p;
        for (int v:adj[u]) {
                if (v == p) continue;
                dfs(v, u);
                sub[u] += sub[v];
        }
}

void dfs2(int u, int p) {
        if (adj[u].size() == 1) {
                vc[t].push_back(u);
        }
        for (int v:adj[u]) {
                if (v == p) continue;
                dfs2(v, u);
        }
}

void solve() {
        cin >> n;
        for (int i = 1; i <= n-1; i++) {
                int u, v;
                cin >> u >> v;
                adj[u].push_back(v);
                adj[v].push_back(u);
        }
        for (int u = 1; u <= n; u++) {
                if (adj[u].size() == 1) {
                        k++;
                        sub[u] = 1;
                }
        }
        dfs(1, 0);
        int r = 0;
        for (int u = 1; u <= n; u++) {
                if (adj[u].size() == 1) continue;
                bool flg = 1;
                for (int v:adj[u]) {
                        if (v == par[u]) flg = flg&&(k-sub[u] <= k/2);
                        else flg = flg&&(sub[v] <= k/2);
                }
                if (flg) {
                        r = u;
                        break;
                }
        }
        for (int u:adj[r]) {
                t++;
                dfs2(u, r);
        }
        for (int i = 1; i <= t; i++) {
                st.insert({-vc[i].size(), i});
        }
        while (st.size() >= 2) {
                auto it = st.begin();
                int A = it->S; it++;
                int B = it->S;

                out.push_back({vc[A].back(), vc[B].back()});

                st.erase({-vc[A].size(), A});
                st.erase({-vc[B].size(), B});

                vc[A].pop_back();
                vc[B].pop_back();
                if (!vc[A].empty()) st.insert({-vc[A].size(), A});
                if (!vc[B].empty()) st.insert({-vc[B].size(), B});
        }
        if (st.size()) {
                int A = st.begin()->S;
                int u = vc[A].back();
                out.push_back({u, r});
        }

        cout << out.size() << endl;
        for (pii x:out) {
                cout << x.F << ' ' << x.S << endl;
        }
}

int main() {
        ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
        solve();
        return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 4 ms 4948 KB Output is correct
3 Correct 3 ms 4948 KB Output is correct
4 Correct 3 ms 4948 KB Output is correct
5 Correct 3 ms 4912 KB Output is correct
6 Correct 3 ms 4948 KB Output is correct
7 Correct 3 ms 5024 KB Output is correct
8 Correct 2 ms 4948 KB Output is correct
9 Correct 3 ms 4948 KB Output is correct
10 Correct 2 ms 4948 KB Output is correct
11 Correct 2 ms 5024 KB Output is correct
12 Correct 3 ms 4948 KB Output is correct
13 Correct 3 ms 5028 KB Output is correct
14 Correct 3 ms 4948 KB Output is correct
15 Correct 3 ms 4948 KB Output is correct
16 Correct 3 ms 4948 KB Output is correct
17 Correct 3 ms 5024 KB Output is correct
18 Correct 4 ms 4948 KB Output is correct
19 Correct 3 ms 5024 KB Output is correct
20 Correct 3 ms 5024 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 4 ms 4948 KB Output is correct
3 Correct 3 ms 4948 KB Output is correct
4 Correct 3 ms 4948 KB Output is correct
5 Correct 3 ms 4912 KB Output is correct
6 Correct 3 ms 4948 KB Output is correct
7 Correct 3 ms 5024 KB Output is correct
8 Correct 2 ms 4948 KB Output is correct
9 Correct 3 ms 4948 KB Output is correct
10 Correct 2 ms 4948 KB Output is correct
11 Correct 2 ms 5024 KB Output is correct
12 Correct 3 ms 4948 KB Output is correct
13 Correct 3 ms 5028 KB Output is correct
14 Correct 3 ms 4948 KB Output is correct
15 Correct 3 ms 4948 KB Output is correct
16 Correct 3 ms 4948 KB Output is correct
17 Correct 3 ms 5024 KB Output is correct
18 Correct 4 ms 4948 KB Output is correct
19 Correct 3 ms 5024 KB Output is correct
20 Correct 3 ms 5024 KB Output is correct
21 Correct 3 ms 4948 KB Output is correct
22 Correct 8 ms 5212 KB Output is correct
23 Correct 4 ms 5160 KB Output is correct
24 Correct 4 ms 5204 KB Output is correct
25 Correct 4 ms 5148 KB Output is correct
26 Correct 4 ms 5076 KB Output is correct
27 Correct 4 ms 5080 KB Output is correct
28 Correct 8 ms 5036 KB Output is correct
29 Correct 4 ms 5076 KB Output is correct
30 Correct 3 ms 4948 KB Output is correct
31 Correct 4 ms 5096 KB Output is correct
32 Correct 3 ms 4948 KB Output is correct
33 Correct 3 ms 4948 KB Output is correct
34 Correct 3 ms 4948 KB Output is correct
35 Correct 4 ms 5024 KB Output is correct
36 Correct 4 ms 4952 KB Output is correct
37 Correct 9 ms 5076 KB Output is correct
38 Correct 10 ms 5076 KB Output is correct
39 Correct 8 ms 4952 KB Output is correct
40 Correct 3 ms 5024 KB Output is correct
41 Correct 3 ms 4948 KB Output is correct
42 Correct 4 ms 5020 KB Output is correct
43 Correct 3 ms 5160 KB Output is correct
44 Correct 3 ms 5028 KB Output is correct
45 Correct 3 ms 4948 KB Output is correct
46 Correct 4 ms 5028 KB Output is correct
47 Correct 3 ms 4948 KB Output is correct
48 Correct 3 ms 4948 KB Output is correct
49 Correct 5 ms 5036 KB Output is correct
50 Correct 5 ms 5024 KB Output is correct
51 Correct 3 ms 4948 KB Output is correct
52 Correct 3 ms 4948 KB Output is correct
53 Correct 3 ms 5076 KB Output is correct
54 Correct 4 ms 4940 KB Output is correct
55 Correct 3 ms 5072 KB Output is correct
56 Correct 3 ms 5024 KB Output is correct
57 Correct 3 ms 5076 KB Output is correct
58 Correct 4 ms 5076 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 4 ms 4948 KB Output is correct
3 Correct 3 ms 4948 KB Output is correct
4 Correct 3 ms 4948 KB Output is correct
5 Correct 3 ms 4912 KB Output is correct
6 Correct 3 ms 4948 KB Output is correct
7 Correct 3 ms 5024 KB Output is correct
8 Correct 2 ms 4948 KB Output is correct
9 Correct 3 ms 4948 KB Output is correct
10 Correct 2 ms 4948 KB Output is correct
11 Correct 2 ms 5024 KB Output is correct
12 Correct 3 ms 4948 KB Output is correct
13 Correct 3 ms 5028 KB Output is correct
14 Correct 3 ms 4948 KB Output is correct
15 Correct 3 ms 4948 KB Output is correct
16 Correct 3 ms 4948 KB Output is correct
17 Correct 3 ms 5024 KB Output is correct
18 Correct 4 ms 4948 KB Output is correct
19 Correct 3 ms 5024 KB Output is correct
20 Correct 3 ms 5024 KB Output is correct
21 Correct 3 ms 4948 KB Output is correct
22 Correct 8 ms 5212 KB Output is correct
23 Correct 4 ms 5160 KB Output is correct
24 Correct 4 ms 5204 KB Output is correct
25 Correct 4 ms 5148 KB Output is correct
26 Correct 4 ms 5076 KB Output is correct
27 Correct 4 ms 5080 KB Output is correct
28 Correct 8 ms 5036 KB Output is correct
29 Correct 4 ms 5076 KB Output is correct
30 Correct 3 ms 4948 KB Output is correct
31 Correct 4 ms 5096 KB Output is correct
32 Correct 3 ms 4948 KB Output is correct
33 Correct 3 ms 4948 KB Output is correct
34 Correct 3 ms 4948 KB Output is correct
35 Correct 4 ms 5024 KB Output is correct
36 Correct 4 ms 4952 KB Output is correct
37 Correct 9 ms 5076 KB Output is correct
38 Correct 10 ms 5076 KB Output is correct
39 Correct 8 ms 4952 KB Output is correct
40 Correct 3 ms 5024 KB Output is correct
41 Correct 3 ms 4948 KB Output is correct
42 Correct 4 ms 5020 KB Output is correct
43 Correct 3 ms 5160 KB Output is correct
44 Correct 3 ms 5028 KB Output is correct
45 Correct 3 ms 4948 KB Output is correct
46 Correct 4 ms 5028 KB Output is correct
47 Correct 3 ms 4948 KB Output is correct
48 Correct 3 ms 4948 KB Output is correct
49 Correct 5 ms 5036 KB Output is correct
50 Correct 5 ms 5024 KB Output is correct
51 Correct 3 ms 4948 KB Output is correct
52 Correct 3 ms 4948 KB Output is correct
53 Correct 3 ms 5076 KB Output is correct
54 Correct 4 ms 4940 KB Output is correct
55 Correct 3 ms 5072 KB Output is correct
56 Correct 3 ms 5024 KB Output is correct
57 Correct 3 ms 5076 KB Output is correct
58 Correct 4 ms 5076 KB Output is correct
59 Runtime error 8 ms 9940 KB Execution killed with signal 11
60 Halted 0 ms 0 KB -