Submission #694134

# Submission time Handle Problem Language Result Execution time Memory
694134 2023-02-03T22:27:18 Z DrearyJoke Bosses (BOI16_bosses) C++17
100 / 100
613 ms 716 KB
#include<bits/stdc++.h>

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define END "\n"
#define rall(v) (v).rbegin(), (v).rend()
#define all(v) (v).begin(), (v).end()
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#include <ext/pb_ds/assoc_container.hpp>

using namespace __gnu_pbds;
template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

void solve(){
    int n;
    cin >> n;
    vector<vector<int>> adj(n + 1);
    for (int i = 1; i <= n; ++i) {
        int k;
        cin >> k;
        while (k--) {
            int a;
            cin >> a;
            adj[a].push_back(i);
        }
    }   
    ll ans = LLONG_MAX;
    for (int s = 1; s <= n; ++s) {
        queue<int> q;
        vector<bool> vis(n + 1);
        vector<int> dist(n + 1);
        dist[s] = 1;
        vis[s] = 1;
        q.push(s);
        int tot = 0;
        ll sum = 0;
        while (!q.empty()) {
            ++tot;
            int v = q.front();
            sum += dist[v];
            q.pop();
            for (auto u: adj[v]) {
                if (!vis[u]) vis[u] = 1, dist[u] = dist[v] + 1, q.push(u);
            }
        }
        if (tot == n) ans = min(ans, sum);
    }
    cout << ans << END;
}
int main()
{
    fastio
    int t = 1;
    // cin>> t;
    while(t--) solve();
    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 0 ms 324 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 320 KB Output is correct
6 Correct 1 ms 212 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 0 ms 324 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 320 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 324 KB Output is correct
9 Correct 1 ms 320 KB Output is correct
10 Correct 1 ms 320 KB Output is correct
11 Correct 1 ms 212 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 0 ms 324 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 320 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 324 KB Output is correct
9 Correct 1 ms 320 KB Output is correct
10 Correct 1 ms 320 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 4 ms 328 KB Output is correct
13 Correct 3 ms 340 KB Output is correct
14 Correct 110 ms 548 KB Output is correct
15 Correct 5 ms 576 KB Output is correct
16 Correct 496 ms 640 KB Output is correct
17 Correct 613 ms 716 KB Output is correct
18 Correct 608 ms 660 KB Output is correct