Submission #404077

# Submission time Handle Problem Language Result Execution time Memory
404077 2021-05-13T18:23:25 Z SavicS Bosses (BOI16_bosses) C++14
100 / 100
781 ms 672 KB
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <bits/stdc++.h>

#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define ff(i,a,b) for(int i=a;i<=b;i++)
#define fb(i,b,a) for(int i=b;i>=a;i--)

using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 5005;
const int inf = 1e9 + 5;

template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// os.order_of_key(k) the number of elements in the os less than k
// *os.find_by_order(k)  print the k-th smallest number in os(0-based)

int n;

vector<int> g[maxn];

bool used[maxn];
int d[maxn];
int bfs(int s){
	ff(i,1,n)d[i] = used[i] = 0;
	queue<int> q;

	used[s] = 1;
	q.push(s);
	while(!q.empty()){
		int v = q.front(); q.pop();
		for(auto u : g[v]){
			if(!used[u]){
				used[u] = 1;
				d[u] = d[v] + 1;
				q.push(u);	
			}
		}
	}	
	
	bool ok = 1;
	ff(i,1,n)ok &= used[i];
	if(!ok)return inf;
	
	int ans = n;
	ff(i,1,n)ans += d[i];
	return ans;
	
}

int main()
{
    ios::sync_with_stdio(false);
    cout.tie(nullptr);
    cin.tie(nullptr);
	cin >> n;
	ff(i,1,n){
		int K;
		cin >> K;
		ff(j,1,K){
			int X;
			cin >> X;
			g[X].pb(i);
		}
	}
	
	int rez = inf;
	ff(i,1,n)rez = min(rez, bfs(i));
	cout << rez << endl;	
	
    return 0;
}
/**

4
1 4
3 1 3 4
2 1 2
1 3

// probati bojenje sahovski ili slicno

**/

# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 432 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 432 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 5 ms 460 KB Output is correct
13 Correct 5 ms 460 KB Output is correct
14 Correct 139 ms 444 KB Output is correct
15 Correct 20 ms 460 KB Output is correct
16 Correct 566 ms 588 KB Output is correct
17 Correct 774 ms 656 KB Output is correct
18 Correct 781 ms 672 KB Output is correct