Submission #1178775

#TimeUsernameProblemLanguageResultExecution timeMemory
1178775petezaBosses (BOI16_bosses)C++20
100 / 100
401 ms932 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n, a, b;
vector<int> adj[5005];
bool vis[5005];
ll ans = LLONG_MAX;
queue<pair<int, int>> q;

int main() {
    cin.tie(0) -> sync_with_stdio(0);
    cin >> n;
    for(int i=1;i<=n;i++) {
        cin >> a;
        while(a--) {
            cin >> b;
            adj[b].push_back(i);
        }
    }
    for(int i=1;i<=n;i++) {
        q.emplace(i, 1);
        ll sum = 0;
        memset(vis, 0, sizeof vis);
        while(!q.empty()) {
            auto e = q.front(); q.pop();
            if(vis[e.first]) continue;
            vis[e.first] = 1;
            sum += e.second;
            for(auto &E:adj[e.first])
                q.emplace(E, e.second+1);
        }
        bool yes = 1;
        for(int j=1;j<=n && yes;j++) yes &= vis[j]; 
        if(yes) ans = min(ans, sum);
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...