제출 #139859

#제출 시각아이디문제언어결과실행 시간메모리
1398592fat2codeBosses (BOI16_bosses)C++14
67 / 100
1545 ms1016 KiB
#include <bits/stdc++.h>
#define ll long long
#define all(a) (a).begin(), (a).end()
//#pragma GCC optimize("O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define sz() size()
#define fr first
#define sc second
#define pb push_back
#define er erase
#define in insert
#define pi pair<int,int>
#define pii pair<pair<int,int>,int>
#define mp make_pair
//#define int long long
#define rc(s) return cout<<s,0
#define rcc(s) cout<<s,exit(0)
//#define cin fin
//#define cout fout
using namespace std;

//ifstream fin("file.in");
//ofstream fout("file.out");

const int nmax=1e3+5;
const int mod=1e9+7;
const int mod1=998244353;

int n,k,x,root,cnt,viz[5005],ans=1e9,dp[5005];
vector<int>cop[5005];
vector<int>nod[5005];

void DFS(int s){
	viz[s]=1;
	for(auto it:nod[s]){
		if(!viz[it]) DFS(it);
	}
	for(auto it:nod[s]){
		dp[s]+=dp[it];
	}
	dp[s]++;
}

int32_t main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin	>> n;
	for(int i=1;i<=n;i++){
		cin >> k;
		for(int j=1;j<=k;j++){
			cin >> x;
			cop[x].push_back(i);
		}
	}
	for(int i=1;i<=n;i++){
		int cnt=0;
		queue<int>q;
		q.push(i);
		for(int j=1;j<=n;j++){
			nod[j].clear();
			viz[j]=0;
		}
		viz[i]=1;
		while(!q.empty()){
			int x=q.front();
			for(auto it:cop[x]){
				if(!viz[it]){
					cnt++;
					viz[it]=1;
					q.push(it);
					nod[x].push_back(it);
				}
			}
			q.pop();
		}
		if(cnt!=n-1) continue;
		for(int j=1;j<=n;j++){
			viz[j]=0;
			dp[j]=0;
		}
		DFS(i);
		int sum=0;
		for(int j=1;j<=n;j++){
			sum+=dp[j];
		}
		ans=min(ans,sum);
	}
	rc(ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...