제출 #1275686

#제출 시각아이디문제언어결과실행 시간메모리
1275686mhn_neekBosses (BOI16_bosses)C++20
100 / 100
392 ms792 KiB
// IN THE NAME OF GOD
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
typedef pair<lli,lli> pii;
typedef vector<lli> ve;
typedef vector<pii> vp;
const lli N = 5e5 + 100;
const lli INF = 1e18;
const lli mod = 1e9 + 7;
#define PB push_back
#define MP make_pair
#define fi first
#define se second
#define FOR(x,y) for(lli x = 0; x < y; x ++)
#define FORS(x,y) for(lli x = 1; x <= y; x ++)
#define all(x) x.begin(),x.end()
#define lb lower_bound
#define ub upper_bound
#define debug(x) cerr<<(#x)<<" "<<x<<endl
lli n;
ve adj[N];
lli dis[N];

lli BFS(lli v){
	FORS(i,n)dis[i] = INF;
	queue<lli> Q;
	Q.push(v);
	dis[v] = 0;

	while (Q.size()){
		lli u = Q.front();
		Q.pop();
		for(auto i : adj[u]){
			if(dis[i] == INF){
				dis[i] = dis[u]  +1;
				Q.push(i);
			}
		}
	}
	lli ans = n;
	FORS(i,n){
		if(dis[i] == INF)return INF;
		ans += dis[i];
	}
	return ans;
	
}


int main(){
	ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>n;
	FORS(v,n){
		lli k;
		cin>>k;
		FOR(j,k){
			lli x;
			cin>>x;
			adj[x].PB(v);
		}
	}
	lli ans = INF;
	FORS(v,n){
		ans = min(ans,BFS(v));
	}
	cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...