Submission #680235

# Submission time Handle Problem Language Result Execution time Memory
680235 2023-01-10T10:10:38 Z Tigerpants Bosses (BOI16_bosses) C++17
100 / 100
854 ms 700 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

typedef long long int ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<bool> vb;

const ll INF = 5000 * 10000;

vvll g;
ll n;

vb vis;
ll solve(ll cur) {
    vll h(n, 1);
    queue<ll> bfs;
    fill_n(vis.begin(), n, false);
    vis[cur] = true;
    ll ans = 0;
    bfs.push(cur);

    while (!bfs.empty()) {
        ll next = bfs.front();
        bfs.pop();
        ans += h[next];

        for (vll::iterator child = g[next].begin(); child != g[next].end(); child++) {
            if (!vis[*child]) {
                vis[*child] = true;
                bfs.push(*child);
                h[*child] = h[next] + 1;
            }
        }
    }

    bool verify = true;
    for (int i = 0; i < n; i++) {verify &= vis[i];}

    if (verify) {return ans;} return INF;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n;
    g.resize(n);
    ll k_tmp;
    ll inp_tmp;
    for (int i = 0; i < n; i++) {
        cin >> k_tmp;
        for (int j = 0; j < k_tmp; j++) {
            cin >> inp_tmp;
            g[inp_tmp - 1].push_back(i);
        }
    }

    ll min_sum = INF;
    vis.resize(n);
    for (int i = 0; i < n; i++) {
        fill_n(vis.begin(), n, false);
        min_sum = min<ll>(min_sum, solve(i));
    }

    cout << min_sum << endl;

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 320 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 320 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 316 KB Output is correct
7 Correct 1 ms 320 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 320 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 316 KB Output is correct
7 Correct 1 ms 320 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 320 KB Output is correct
12 Correct 8 ms 460 KB Output is correct
13 Correct 4 ms 464 KB Output is correct
14 Correct 280 ms 600 KB Output is correct
15 Correct 135 ms 592 KB Output is correct
16 Correct 736 ms 700 KB Output is correct
17 Correct 854 ms 684 KB Output is correct
18 Correct 849 ms 688 KB Output is correct