제출 #1176486

#제출 시각아이디문제언어결과실행 시간메모리
1176486JungPSBosses (BOI16_bosses)C++17
100 / 100
370 ms756 KiB
#include<iostream>
#include<vector>
#include<utility>
#include<queue>
#include<cstring>
using namespace std;

#define int long long
vector<int> vec[5007];
bool visited[5007];
int cnt,cost;
int n;

void bfs(int x){
    queue<pair<int,int>> q;
    q.push({x,1});
    visited[x]=true;
    while(!q.empty()){
        pair<int,int> p=q.front();
        q.pop();
        ++cnt;
        cost+=p.second;
        for(auto i:vec[p.first]){
            if(visited[i]) continue;
            visited[i]=1;
            q.push({i,p.second+1});
        }
    }
}
signed main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    cin >> n;
    for(int i=1;i<=n;++i){
        int tmp; cin >> tmp;
        while(tmp--){
            int tmp2; cin >> tmp2;
            vec[tmp2].push_back(i);
        }
    }
    int ans=1e18;
    for(int i=1;i<=n;++i){
        memset(visited,0,sizeof(visited));
        cnt=0,cost=0;
        bfs(i);
        if(cnt==n) ans=min(cost,ans);
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...