This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// YOU ONLY GOT ONE SHOT
#include <bits/stdc++.h>
#define put(x) cerr << #x << ": " << x << '\n'
#define line() cerr << "**************\n"
#define int long long
#pragma GCC optimize ("Ofast")
//#define F first
//#define S second
//#define mul(x, y) (((x) * (y)) %mod)
//#define bit(i, j) (((i)>>(j)) &1)
//#define left(id) ((id<<1) + 1)
//#define right(id) ((id<<1) + 2)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
const int maxn = 5000 + 10;
const ll inf = 1e18 + 10;
int n;
vector <int> G[maxn], List[maxn], adj[maxn];
bool mark[maxn];
int sz[maxn];
ll dfs(int v, int par){
ll res = 0;
sz[v] = 1;
for(int u: adj[v]){
if(u == par)
continue;
res += dfs(u, v);
sz[v] += sz[u];
}
res += sz[v];
return res;
}
void bfs(int src){
fill(mark, mark+maxn, 0);
queue <int> q;
q.push(src);
mark[src] = 1;
while(!q.empty()){
int v = q.front();
q.pop();
for(int u: G[v]){
if(mark[u])
continue;
mark[u] = 1;
adj[v].push_back(u), adj[u].push_back(v);
q.push(u);
}
}
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
int k;
for(int i=1; i<=n; i++){
cin >> k;
List[i].resize(k);
for(int j=0; j<k; j++){
cin >> List[i][j];
G[List[i][j]].push_back(i);
}
}
ll ans = inf;
for(int i=1; i<=n; i++){
bfs(i);
ans = min(ans, dfs(i, 0));
for(int j=1; j<=n; j++)
adj[j].clear();
fill(sz, sz+maxn, 0);
}
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... |