#include <bits/stdc++.h>
#define int long long
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
#define REV(i, a, b) for (int i = (a), _b = (b); i >= _b; --i)
using namespace std;
#define MAXN 5005
vector<int> g[MAXN];
vector<int> adj[MAXN];
int n;
int vi[MAXN];
int dp[MAXN];
void DP(int u){
for(int &x : adj[u]){
DP(x);
dp[u] += dp[x];
}
dp[u]++;
}
void solve(){
cin >> n;
FOR(i, 1, n){
int k; cin >> k;
FOR(j, 1, k){
int x; cin >> x;
g[x].push_back(i);
}
}
int res = 1e15;
FOR(root, 1, n){
FOR(i, 1, n){
adj[i].clear();
dp[i] = 0;
}
deque<int> dq;
dq.push_back(root);
vi[root] = root;
while (dq.size()){
int cur = dq.front();
dq.pop_front();
for (int &x : g[cur]){
if (vi[x] == root) continue;
vi[x] = root;
adj[cur].push_back(x);
dq.push_back(x);
}
}
DP(root);
int sum = 0;
FOR(i, 1, n) sum += dp[i];
res = min(res, sum);
}
cout << res;
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |