제출 #488249

#제출 시각아이디문제언어결과실행 시간메모리
488249DUONGBosses (BOI16_bosses)C++14
100 / 100
633 ms656 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i ++)
#define FORD(i, b, a) for(int i = (b), _a = (a); i >= _a; i --)
const int MAX=5003;
int vis[MAX],n,cnt=0;
ll cost=0;
vector< vector<int> >adj(MAX) ;
void bfs(int src)
{
    queue<pair<int,int>>q ;
    q.push({src,1}) ;
    vis[src]=1 ;
    while(!q.empty())
    {
        pair<int,int>p=q.front();
        q.pop();
        cnt++;
        int node=p.first;
        cost+=(p.second*1ll) ;
        for(auto &child : adj[node])
        {
            if(vis[child]==1) continue;
            vis[child]=1;
            q.push({child,p.second+1}) ;
        }
    }
}

int main()
{
   // freopen("BOSSES.INP","r",stdin);
  //  freopen("BOSSES.OUT","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    FOR(i,1,n)
    {
        int m;
        cin>>m;
        while(m--)
        {
            int x;
            cin>>x;
            adj[x].push_back(i);
        }
    }
    ll ans=1e18;
    FOR(i,1,n)
    {
        memset(vis,0,sizeof(vis));
        cnt=0,cost=0;
        bfs(i);
        if(cnt!=n) continue;
        ans=min(ans,cost);
    }
    cout<<ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...