제출 #1293527

#제출 시각아이디문제언어결과실행 시간메모리
1293527trantrungkeinBosses (BOI16_bosses)C++20
100 / 100
734 ms1072 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
int ans = 1e18, res = 0;
const int N = 2e5 + 6;
vector<int> adj[N],g[N];
int n,vis[N];
int dfs(int u, int p){
    int sum = 0;
    for(int v : adj[u]) if(v != p){
        sum += dfs(v,u);
    }
    res += sum + 1;
    return sum + 1;
}
void build(int root){
    for(int i = 1; i <= n; i++) vis[i] = 0, adj[i].clear();
    queue<int> q;
    q.push(root);
    //cout << root << '\n';
    while(!q.empty()){
        int u = q.front(); q.pop();
        vis[u] = true;
        for(int v : g[u]) if(!vis[v]){
            q.push(v);
            adj[u].push_back(v);
            vis[v] = true;
            //cout << u <<' ' << v << endl;
        }
    }
    res = 0;
    for(int i = 1; i <= n; i++) if(!vis[i]) {return;}
    dfs(root,0);
    ans = min(ans,res);
}
int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin >> n;
    for(int i = 1; i <= n; i++){
        int k;
        cin >> k;
        for(int j = 1; j <= k; j++) { int p;
            cin >> p;
            g[p].push_back(i);
        }
    }
    for(int i = 1; i <= n; i++) build(i);
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...