Submission #951875

#TimeUsernameProblemLanguageResultExecution timeMemory
951875MohamedAhmed04Bosses (BOI16_bosses)C++14
100 / 100
424 ms848 KiB
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 5000 + 10 ;

int n ;
vector< vector<int> >adj(MAX) ;

int dep[MAX] , vis[MAX] ;

int solve(int boss)
{
    for(int i = 1 ; i <= n ; ++i)
        vis[i] = 0 ;
    int cnt = 0 , sum = 0 ;
    queue<int>q ;
    q.push(boss) ;
    dep[boss] = 1 , vis[boss] = 1 ;
    while(!q.empty())
    {
        int node = q.front() ;
        q.pop() ;
        cnt++ , sum += dep[node] ;
        for(auto &child : adj[node])
        {
            if(!vis[child])
            {
                vis[child] = 1 ;
                dep[child] = dep[node] + 1 ;
                q.push(child) ;
            }
        }
    }
    if(cnt != n)
        sum = 2e9 ;
    return sum ;
}

int main()
{
    ios_base::sync_with_stdio(0) ;
    cin.tie(0) ;
    cin>>n ;
    for(int i = 1 ; i <= n ; ++i)
    {
        int sz ;
        cin>>sz ;
        while(sz--)
        {
            int node ;
            cin>>node ;
            adj[node].push_back(i) ;
        }
    }
    int ans = 1e9 ;
    for(int i = 1 ; i <= n ; ++i)
        ans = min(ans , solve(i)) ;
    return cout<<ans<<"\n" , 0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...