Submission #414088

# Submission time Handle Problem Language Result Execution time Memory
414088 2021-05-30T01:52:06 Z ignaciocanta Bosses (BOI16_bosses) C++14
67 / 100
1500 ms 936 KB
#include <bits/stdc++.h>

using namespace std;

//#include <ext/pb_ds/assoc_container.hpp>
//using namespace __gnu_pbds;
//template<class T> using Tree = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
 
using tint = long long;
using ld = long double;
 
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)	
 
using pi = pair<int,int>;
using pl = pair<tint,tint>;
using vi = vector<int>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vvi = vector<vi>;
using vl = vector<tint>;
using vb = vector<bool>;
 
#define pb push_back
#define pf push_front
#define rsz resize
#define all(x) begin(x), end(x)
#define rall(x) x.rbegin(), x.rend() 
#define sz(x) (int)(x).size()
#define ins insert
 
#define f first
#define s second
#define mp make_pair
 
#define DBG(x) cerr << #x << " = " << x << endl;
 
const int MOD = 1e9+7; 
const int mod = 998244353;
const int MX = 5005;
const tint INF = 1e18; 
const int inf = 2e8;
const ld PI = acos(ld(-1)); 
const ld eps = 1e-5;
 
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
 
template<class T> void remDup(vector<T> &v){ 
    sort(all(v)); v.erase(unique(all(v)),end(v));
}
 
template<class T> bool ckmin(T& a, const T& b) {
    return b < a ? a = b, 1 : 0; 
} 
template<class T> bool ckmax(T& a, const T& b) {
    return a < b ? a = b, 1 : 0; 
}
 
bool valid(int x, int y, int n, int m){
    return (0<=x && x<n && 0<=y && y<m);
}
 
int cdiv(int a, int b) { return a/b+((a^b)>0&&a%b); } //redondea p arriba
int fdiv(int a, int b) { return a/b-((a^b)<0&&a%b); } //redondea p abajo
 
void NACHO(string name = ""){
    ios_base::sync_with_stdio(0); cin.tie(0);
    if(sz(name)){
        freopen((name+".in").c_str(), "r", stdin);
        freopen((name+".out").c_str(), "w", stdout);
    }
}

vi adj[MX];
vi tree[MX];
bool vis[MX];
tint tot;
int n;
 
tint dfs(int node){
	vis[node] = 1;
	tint sumch = 0;
	trav(u, tree[node]){
		if(!vis[u]){
			sumch += dfs(u);
		}
	}
	tot += sumch+1;
	return sumch+1;
}

tint bfs(int node){
	queue<int> q; q.push(node);
	int visTot = 0;
	vis[node] = 1;
	while(sz(q)){
		auto u = q.front(); q.pop();
		++visTot;
		trav(v, adj[u]){
			if(!vis[v]){
				vis[v] = 1;
				tree[u].pb(v);
				q.push(v);
			}
		}
	}
	F0R(i, MX) vis[i] = 0;
	tot = 0; dfs(node);
	return visTot == n ? tot : INF;
}

int main(){
	NACHO();
	cin >> n;
	F0R(i, n){
		int k; cin >> k;
		F0R(assa, k){
			int x; cin >> x;
			adj[x-1].pb(i);
		}
	}
	tint ret = INF;
	F0R(i, n){
		F0R(j, n) vis[j] = 0;
		F0R(j, n) tree[j].clear();
		//cout << i+1 << " " << bfs(i) << endl;
		ckmin(ret, bfs(i));
	}
	cout << ret << "\n";
}
/*
4
1 4
3 1 3 4
2 1 2
1 3
*/ 

Compilation message

bosses.cpp: In function 'void NACHO(std::string)':
bosses.cpp:73:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   73 |         freopen((name+".in").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bosses.cpp:74:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   74 |         freopen((name+".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 560 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 560 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 564 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 552 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 1 ms 560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 560 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 564 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 552 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 1 ms 560 KB Output is correct
12 Correct 5 ms 696 KB Output is correct
13 Correct 4 ms 716 KB Output is correct
14 Correct 358 ms 864 KB Output is correct
15 Correct 44 ms 728 KB Output is correct
16 Correct 1226 ms 888 KB Output is correct
17 Execution timed out 1564 ms 936 KB Time limit exceeded
18 Halted 0 ms 0 KB -