제출 #107313

#제출 시각아이디문제언어결과실행 시간메모리
107313GustavBosses (BOI16_bosses)C++14
100 / 100
797 ms728 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<vi> vvi;
const int inf = 0x3f3f3f3f;
const ll linf = 123456789012345678;
const ll mod = 1000000007;
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " = " << x << endl

int n;
vvi c;

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

    cin >> n;
    c = vvi(n);
    for(int i = 0; i < n; i++){
        int k;
        cin >> k;
        for(int j = 0; j < k; j++){
            int t;
            cin >> t;
            c[t-1].push_back(i);
        }
    }

    int ans = inf;
    for(int i = 0; i < n; i++){
        int t_ans = 0;
        vi seen(n);
        seen[i] = true;
        int sc = 1;
        queue<pi> q;
        q.push({i,1});
        while(!q.empty()){
            int e = q.front().first;
            int d = q.front().second;
            q.pop();
            for(int x : c[e]){
                if(seen[x]) continue;
                seen[x] = 1;
                q.push({x, d+1});
                sc++;
            }
            t_ans += d;
        }
        if(sc == n)
            ans = min(t_ans, ans);
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...