Submission #1208836

#TimeUsernameProblemLanguageResultExecution timeMemory
1208836vincentbucourt1Bosses (BOI16_bosses)C++20
100 / 100
376 ms948 KiB
#include <bits/stdc++.h>
using namespace std;
void fastIO(){ios_base::sync_with_stdio(false),cin.tie(0);}
#define int long long

const int INF = (int)1e18;
const int MAXV = 5020;

int V;
vector<int> adj[MAXV];
int ans = INF;

int BFS (int root) {
    deque<int> DQ;
    DQ.push_back(root);
    vector<int> len(V, -1);
    len[root] = 1;
    while (!DQ.empty()) {
        int nodeOn = DQ.front();
        DQ.pop_front();
        for (int nodeNxt : adj[nodeOn]) {
            if (len[nodeNxt] == -1) {
                len[nodeNxt] = len[nodeOn] + 1;
                DQ.push_back(nodeNxt);
            }
        }
    }
    int res = 0;
    for (int i = 0; i < V; i++) {
        if (len[i] == -1) {
            return INF;
        }
        res += len[i];
    }
    return res;
}

signed main() {
    fastIO();
    cin >> V;
    for (int i = 0; i < V; i++) {
        int num;
        cin >> num;
        for (int j = 0; j < num; j++) {
            int v;
            cin >> v;
            v--;
            adj[v].push_back(i);
        }
    }
    for (int root = 0; root < V; root++) {
        ans = min(ans, BFS(root));
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...