Submission #1275665

#TimeUsernameProblemLanguageResultExecution timeMemory
1275665ehsan1011000Bosses (BOI16_bosses)C++20
100 / 100
368 ms752 KiB
#include <bits/stdc++.h>
#include <iomanip>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,sse4")
 
using namespace std;
 
# define pb push_back
# define pf push_front
# define ff first
# define ss second
# define ll long long
# define lc id * 2
# define rc lc | 1
//# define int long long
# define mid (r + l) / 2
//# define mp make_pair
typedef long double ld;
#define kill(x)  cout << x << '\n', exit(0)
typedef pair<int, char> pic;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef priority_queue<pll, vector<pll>, greater<pll>> pq;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll maxn = 5e3 + 10, maxm = 4e5 + 10, sq = 1300, LOG = 30, mod = 1e9 + 7;
const ll inf = 1e17;
int n;
vector<int> adj[maxn];
queue<int> q;
ll dist[maxn];
ll ans = inf, cnt = 0, num = 0;

void bfs(int st){
	dist[st] = 0;
	q.push(st);
	while(! q.empty()){
		int v = q.front();
		q.pop();
		num ++;
		cnt += (dist[v] + 1);
		for(int u : adj[v]){
			if(dist[v] + 1 < dist[u]){
				dist[u] = dist[v] + 1;
				q.push(u);
			}
		}
	}
}

int main() {
	ios::sync_with_stdio(false);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 v;
			cin >> v;
			adj[v].pb(i);
		}
	}
	for(int i = 1; i <= n; i ++){
		memset(dist, 63, sizeof(dist));
		cnt = num = 0;
		bfs(i);
		if(num < n) continue;
		ans = min(ans, cnt);
	}
	cout << ans << '\n';
    return 0; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...