Submission #358892

#TimeUsernameProblemLanguageResultExecution timeMemory
358892Bill_00Bosses (BOI16_bosses)C++14
100 / 100
850 ms5356 KiB
#include <bits/stdc++.h>
#define ff first
#define ss second
#define mp make_pair
#define pb push_back
#define pp push
#define MOD 1000000007
#define INF 1e18
#define N 200005
typedef long long ll;
using namespace std;
// mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
vector<int>adj[N];
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin >> n;
	for(int i=1;i<=n;i++){
		int k;
		cin >> k;
		while(k--){
			int c;
			cin >> c;
			adj[c].pb(i);
		}
	}
	long long ans=1e18;
	for(int i=1;i<=n;i++){
		int cnt=0;
		long long res=0;
		bool vis[5001];
		memset(vis,0,sizeof(vis));
		queue<pair<ll,ll> >q;
		q.push({(ll)i,(ll)1});
		vis[i]=1;
		while(!q.empty()){
			cnt++;
			int node=q.front().ff;
			int height=q.front().ss;
			q.pop();
			res+=height;
			for(int j:adj[node]){
				if(vis[j]==0){
					vis[j]=1;
					q.push({j,height+1});
				}
			}
		}
		if(cnt==n) ans=min(ans,res);
	}
	cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...