Submission #1149242

#TimeUsernameProblemLanguageResultExecution timeMemory
1149242andrewpBosses (BOI16_bosses)C++20
100 / 100
385 ms2996 KiB
//Dedicated to my love, ivaziva
#include <bits/stdc++.h> 
using namespace std;
#define ll long long
#define pb push_back
#define pii pair<int,int>
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define sz(a) ((int)a.size()) 
const int N=1e5+5; 

int n;
ll ans=(ll)(1e18), dep[N];
vector<int> g[N];

void bfs(int sr) {
    for (int i=1; i<=n; i++) 
        dep[i]=(ll)(1e18);
    queue<int> q;
    q.push(sr);
    dep[sr]=1;
    ll upd=0;
    while (!q.empty()) {
        int x=q.front();
        q.pop();
        upd+=dep[x];
        for (int u:g[x]) {
            if (dep[u]>dep[x]+1) {
                dep[u]=dep[x]+1;
                q.push(u);
            }
        }
    }
    for (int i=1; i<=n; i++) {
        if (dep[i]==(ll)(1e18)) 
            upd=(ll)(1e18);
    }
    ans=min(ans, upd);
} 

int main () {
    ios::sync_with_stdio(false), cin.tie(0);

    cin >> n;
    for (int i=1; i<=n; i++) {
        int si; cin >> si;
        while (si--) {
            int v;
            cin >> v;
            g[v].pb(i);
        }
    }
    ans=(ll)(1e18);
    for (int i=1; i<=n; i++) 
        bfs(i);
    cout << ans << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...