Submission #1275759

#TimeUsernameProblemLanguageResultExecution timeMemory
1275759hom84287Bosses (BOI16_bosses)C++20
100 / 100
424 ms704 KiB
#include<bits/stdc++.h>
using namespace std ; 


const int maxn = 5e3+123 , INF=1e9+7 ; 
vector <int> emp[maxn] ;
int n ; 
bool vis[maxn] ; 
int root(int u){
    int res=1 ; 
    queue <pair<int,int>> que  ;
    fill(vis , vis+n+1 , 0) ;
    que.push({u ,1}) ;   
    vis[u]=1 ; 
    while(!que.empty()){
        int ver=que.front().first ,deep=que.front().second ;
        que.pop() ;  
        for(int i:emp[ver]) if(!vis[i]){
            res+=deep+1 ;
            vis[i]=1 ; 
            que.push({i , deep+1}) ; 
        } 
    }
    for(int i=1 ; i<=n ;i++) if(!vis[i]) return INF ;
    //cout<<u<<' '<<res<<'\n';  
    return res ; 
}
int main(){
    cin>>n ; 
    for(int i=1 ; i<=n ; i++){
        int hom ; cin>>hom ; 
        for(int j=0 ; j<hom ; j++){
            int u ; 
            cin>>u ; 
            emp[u].push_back(i) ; 
        }
    }
    int ans=INF ; 
    for(int i=1 ; i<=n; i++)    ans = min(ans , root(i)) ; 
    cout<<ans<<'\n' ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...