Submission #1091824

#TimeUsernameProblemLanguageResultExecution timeMemory
1091824vjudge1Bosses (BOI16_bosses)C++17
100 / 100
519 ms860 KiB
#include <bits/stdc++.h>
#define int long long int

using namespace std;

const int maxn = 5010, inf = 1e18;

int h[maxn], n, comp, tmp;

vector<int> adj[maxn];
bool mark[maxn];

queue<int> q;

void bfs(int source){
	q.push(source);
	h[source] = 1;
	mark[source] = true;
	while(q.size()){
		comp++;
		int v = q.front();
		q.pop();
		tmp += h[v];
		for(auto u : adj[v]){
			if(!mark[u]){
				h[u] = h[v] + 1;
				mark[u] = true;
				q.push(u);
			}
		}
	}
}

int32_t main(){
	
	ios::sync_with_stdio(0) ,cout.tie(0) ,cin.tie(0);
	
	cin >> n;
	for(int i =1 ; i<= n; i++){
		int sz;
		cin >> sz;
		while(sz--){
			int x;
			cin >> x;
			adj[x].push_back(i);
		}
	}
	
	int ans = inf;
	
	for(int i = 1; i <= n ; i++){
		for(int i = 1 ; i<= n; i++){
			mark[i] = 0;
			h[i] = 0;
		}
		
		comp = 0;
		tmp = 0;
		bfs(i);
		if(comp == n){
			ans = min(ans ,tmp);
		}
	}
	
	cout << ans << endl;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...