Submission #1238735

#TimeUsernameProblemLanguageResultExecution timeMemory
1238735IrateBosses (BOI16_bosses)C++20
100 / 100
394 ms756 KiB
#include<bits/stdc++.h>
using namespace std;
const int mxN = 5005;
const long long inf = 1e18;
long long dist[mxN];
vector<int> G[mxN];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    for(int i = 1;i <= n;++i){
        int k;
        cin >> k;
        for(int j = 0;j < k;++j){
            int v;
            cin >> v;
            G[v].push_back(i);
        }
    }
    long long mn = inf;
    for(int i = 1;i <= n;++i){
        for(int j = 0;j < mxN;++j)dist[j] = inf;
        queue<int>q;
        q.push(i);
        dist[i] = 0;
        while(!q.empty()){
            int node = q.front();
            q.pop();
            for(int &v : G[node]){
                if(dist[v] > dist[node] + 1){
                    dist[v] = dist[node] + 1;
                    q.push(v);
                }
            }
        }
        long long S = 0;
        for(int i = 1;i <= n;++i){
            if(dist[i] == inf){
                S = inf;
                break;
            }
            S += dist[i] + 1;
        }
        mn = min(mn, S);
    }
    cout << mn << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...