#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |