#include <bits/stdc++.h>
#define ll long long
#define int long long
#define fast_io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define lc (id << 1)
#define rc ((id << 1) ^ 1)
using namespace std;
const long long mod = 1e9 + 7, maxn = 5e3 + 9, base = 1e6 + 7;
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
int n,ans1 = 0;
vector<int> adj[maxn],adj2[maxn];
int dfs(int v)
{
int val = 0;
for(int u : adj2[v])
val += dfs(u);
val++;
ans1 += val;
return val;
}
int calc_ans(int v)
{
for(int i = 0; i <= n;i++)
adj2[i].clear();
deque<int> q;
q.push_front(v);
bitset<5009> mark;
mark[v] = true;
int tt = 1;
while (q.size())
{
int u = q.back();
q.pop_back();
for(int x : adj[u])
if(!mark[x]){
q.push_front(x);
mark[x] = true;
tt++;
adj2[u].push_back(x);
}
}
ans1 = 0;
dfs(v);
if(tt == n)
return ans1;
else
return INT_MAX;
}
int32_t main()
{
//fast_io;
cin >> n;
for(int i = 1;i <= n;i++)
{
int ki;
cin >> ki;
for(int j = 1; j <= ki;j++)
{
int p;
cin >> p;
adj[p].push_back(i);
}
}
int ans = INT_MAX;
for(int i = 1;i <= n;i++)
{
ans = min(ans , calc_ans(i));
}
cout << ans << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |