Submission #636977

# Submission time Handle Problem Language Result Execution time Memory
636977 2022-08-30T22:58:16 Z Cyber_Wolf Bosses (BOI16_bosses) C++14
100 / 100
937 ms 6924 KB
//Contest: BOI 2016 Day 1 Problem 1
//Problem: Bosses

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast")

using namespace std;
using namespace __gnu_pbds;

#define lg long long
#define ordered_set	tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args);
#define endl \n
#define lbound(x, y) lower_bound(x.begin(), x.end(), y) 
#define ubound(x, y) upper_bound(x.begin(), x.end(), y) 
#define sortasc(v) sort(v.begin(), v.end())	
#define sortdesc(v) sort(v.rbegin(), v.rend())	
#define custom_array(a,l, r) int _##a[r-l+1]; int*a=_##a-l;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const lg MOD = 1e9+7, N = 2e5+5, M = 1e7+1, SZ = 1e3+1;
/*
bitset<N> primes;
lg pwrs[N], inv[N];

lg fast_power(lg n, lg k)
{
	if(!k)	return 1;
	if(k&1)	return (fast_power(n, k-1)*n)%MOD;
	lg x = fast_power(n, k/2)%MOD;
	return (x*x)%MOD;
}

void sieve()
{
	primes.set();
	primes[0] = primes[1] = 0;
	for(lg i = 2; i < N; i++)
	{
		if(!primes[i])	continue;
		for(lg j = i*i; j < N; j += i)
		{
			primes[j] = 0;
		}
	}
	return;
}

struct matrix
{
	vector<vector<lg>> con = vector<vector<lg>> (SZ, vector<lg> (SZ));
	matrix operator *(const matrix& a)
	{
		matrix product;
		for(int i = 0; i < (lg)con.size(); i++)
		{
			for(int j = 0; j < (lg)a.con[0].size(); j++)
			{
				for(int k = 0; k < (lg)a.con.size(); k++)
				{
					product.con[i][j] = (product.con[i][j]+(con[i][k]*a.con[k][j])%MOD)%MOD; 
				}
			}
		}
		return product;
	}
};

void preprocess(lg x)
{
	inv[2e5] = fast_power(x, MOD-2);
	for(int i = 2e5-1; i > 1; i--)
	{
		inv[i] = (inv[i+1]*i)%MOD;
	}
	pwrs[0] = 1;
	for(int i = 1; i <= 2e5; i++)
	{
		pwrs[i] = (pwrs[i]*i)%MOD;
	}
	return;
}

*/

vector<lg> adj[N];
lg vis[N], tmp, dist[N], n;

lg bfs(lg src)
{
	vis[src] = tmp;
	queue<lg> q;
	q.push(src);
	memset(dist, 0, sizeof(dist));
	dist[src] = 1;
	lg dis = 1;
	while(q.size())
	{
		dis++;
		lg sz = q.size();
		while(sz--)
		{
			lg u = q.front();
			q.pop();
			for(auto it : adj[u])
			{
				if(vis[it] == tmp)	continue;
				vis[it] = tmp;
				dist[it] = dis;
				q.push(it);
			}
		}
	}
	lg ans = 0;
	for(int i = 1; i <= n; i++)	
	{
		ans += dist[i];
	}
	return ans;
}

int main()
{
	fastio;
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		lg k;
		cin >> k;
		while(k--)
		{
			lg x;
			cin >> x;
			adj[x].push_back(i);
		}
	}
	lg ans = LLONG_MAX;
	for(int i = 1; i <= n; i++)
	{
		tmp++;
		lg cur = bfs(i);
		bool flag = true;
		for(int j = 1; j <= n; j++)
		{
			flag &= (vis[j] == tmp);
		}
		if(flag)	ans = min(ans, cur);
	}
	cout << ans << '\n';
	
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 6484 KB Output is correct
2 Correct 4 ms 6484 KB Output is correct
3 Correct 3 ms 6484 KB Output is correct
4 Correct 3 ms 6484 KB Output is correct
5 Correct 4 ms 6484 KB Output is correct
6 Correct 4 ms 6484 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 6484 KB Output is correct
2 Correct 4 ms 6484 KB Output is correct
3 Correct 3 ms 6484 KB Output is correct
4 Correct 3 ms 6484 KB Output is correct
5 Correct 4 ms 6484 KB Output is correct
6 Correct 4 ms 6484 KB Output is correct
7 Correct 9 ms 6568 KB Output is correct
8 Correct 6 ms 6484 KB Output is correct
9 Correct 5 ms 6536 KB Output is correct
10 Correct 7 ms 6484 KB Output is correct
11 Correct 8 ms 6484 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 6484 KB Output is correct
2 Correct 4 ms 6484 KB Output is correct
3 Correct 3 ms 6484 KB Output is correct
4 Correct 3 ms 6484 KB Output is correct
5 Correct 4 ms 6484 KB Output is correct
6 Correct 4 ms 6484 KB Output is correct
7 Correct 9 ms 6568 KB Output is correct
8 Correct 6 ms 6484 KB Output is correct
9 Correct 5 ms 6536 KB Output is correct
10 Correct 7 ms 6484 KB Output is correct
11 Correct 8 ms 6484 KB Output is correct
12 Correct 17 ms 6704 KB Output is correct
13 Correct 11 ms 6708 KB Output is correct
14 Correct 380 ms 6744 KB Output is correct
15 Correct 211 ms 6752 KB Output is correct
16 Correct 784 ms 6924 KB Output is correct
17 Correct 932 ms 6848 KB Output is correct
18 Correct 937 ms 6836 KB Output is correct