#include <bits/stdc++.h>
using namespace std;
int const INF=1e9;
int const MAX=5005;
int n;
vector<int>sons[MAX];
void read(){
    cin>>n;
    int i;
    for(i=1;i<=n;++i){
        int nr;
        cin>>nr;
        while(nr--){
            int boss;
            cin>>boss;
            sons[boss].push_back(i);
        }
    }
}
int cost[MAX];
int bfs(int start){
    int i;
    for(i=1;i<=n;++i)
        cost[i]=0;
    queue<int>q;
    cost[start]=1;
    q.push(start);
    while(!q.empty()){
        int curr=q.front();
        q.pop();
        for(auto fiu : sons[curr])
        if(!cost[fiu]){
            cost[fiu]=cost[curr]+1;
            q.push(fiu);
        }
    }
    bool gasit=0;
    int sum=0;
    for(i=1;i<=n;++i)
        if(cost[i])
            sum+=cost[i];
        else
            gasit=1;
    return ((gasit)?INF:sum);
}
void minself(int& x,int val){
    if(x>val)
        x=val;
}
int solve(){
    int minim=INF;
    int i;
    for(i=1;i<=n;++i)
        minself(minim,bfs(i));
    return minim;
}
int main()
{
    read();
    cout<<solve();
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |