Submission #207820

#TimeUsernameProblemLanguageResultExecution timeMemory
207820bensonlzlBosses (BOI16_bosses)C++14
100 / 100
758 ms888 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll N, K, X, dist[5005];
vector<ll> employ[5005];

ll bfs(int x){
	ll sum = 0;
	for (int i = 1; i <= N; ++i) dist[i] = 1e9;
	dist[x] = 0;
	queue<int> q;
	q.push(x);
	while (!q.empty()){
		int v = q.front();
		q.pop();
		for (auto it : employ[v]){
			if (dist[it] > dist[v] + 1){
				dist[it] = dist[v] + 1;
				q.push(it);
			}
		}
	}
	for (int i = 1; i <= N; ++i){
		sum += dist[i];
	}
	return sum + N;
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin >> N;
	for (int i = 1; i <= N; ++i){
		cin >> K;
		for (int j = 1; j <= K; ++j){
			cin >> X;
			employ[X].push_back(i);
		}
	}
	ll mini = 1e9;
	for (int i = 1; i <= N; ++i){
		mini = min(mini,bfs(i));
	}
	cout << mini << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...