Submission #1048028

# Submission time Handle Problem Language Result Execution time Memory
1048028 2024-08-07T20:27:01 Z mindiyak Keys (IOI21_keys) C++17
37 / 100
3000 ms 39992 KB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops")
#include <bits/stdc++.h>
#include <string>
#include <iostream>
#include <cmath>
#include <numeric>
#include "keys.h"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<int, int> pl;
typedef pair<ld, ld> pd;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<vector<int>> vvi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
#define FOR(i, a, b) for (int i = a; i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define FORd(i, a, b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--)
#define trav(a, x) for (auto &a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)
#define len(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define F first
#define nl endl
#define S second
#define lb lower_bound
#define ub upper_bound
#define aint(x) x.begin(), x.end()
#define raint(x) x.rbegin(), x.rend()
#define ins insert
const int MOD = 1000000007;

vector<vpi> paths(3e5+10,vpi());
int n;
vi visited;

void bfs(int pos,vi r){

	queue<int> nodes;
	set<int> keys;
	vvi nokeys(3e5+10,vi());

	nodes.push(pos);

	while(!nodes.empty()){
		int node = nodes.front();nodes.pop();
		if(visited[node])continue;
		keys.insert(r[node]);
		visited[node] = 1;

		for(int edge:nokeys[r[node]]){
			nodes.push(edge);
		}
		nokeys[r[node]] = vi();

		for(pi edge:paths[node]){
			if(keys.count(edge.S)){
				nodes.push(edge.F);
			}else{
				nokeys[edge.S].pb(edge.F);
			}
		}
	}
}

vi find_reachable(vi r, vi u, vi v, vi c) {
	
	FOR(i,0,u.size()){
		paths[u[i]].pb({v[i],c[i]});
		paths[v[i]].pb({u[i],c[i]});
	}

	n = r.size();
	vi counter(n,0);
	int val = 1e9;

	FOR(i,0,n){
		visited = vi (n,0);
		bfs(i,r);
		int cnt = 0;
		FOR(j,0,n)cnt += visited[j];
		counter[i] = cnt;
		val = min(val,cnt);
	}

	// for(int a:counter)cout << a << " ";
	// cout << endl;


	FOR(i,0,n){
		if(counter[i] == val)counter[i] = 1;
		else counter[i] = 0;
	}


	return counter;
}

Compilation message

keys.cpp: In function 'vi find_reachable(vi, vi, vi, vi)':
keys.cpp:22:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 | #define FOR(i, a, b) for (int i = a; i < (b); i++)
      |                                        ^
keys.cpp:76:2: note: in expansion of macro 'FOR'
   76 |  FOR(i,0,u.size()){
      |  ^~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14428 KB Output is correct
2 Correct 3 ms 14428 KB Output is correct
3 Correct 4 ms 14408 KB Output is correct
4 Correct 58 ms 14548 KB Output is correct
5 Correct 5 ms 14428 KB Output is correct
6 Correct 6 ms 14428 KB Output is correct
7 Correct 7 ms 14428 KB Output is correct
8 Correct 47 ms 14428 KB Output is correct
9 Correct 56 ms 14428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14428 KB Output is correct
2 Correct 3 ms 14428 KB Output is correct
3 Correct 4 ms 14408 KB Output is correct
4 Correct 58 ms 14548 KB Output is correct
5 Correct 5 ms 14428 KB Output is correct
6 Correct 6 ms 14428 KB Output is correct
7 Correct 7 ms 14428 KB Output is correct
8 Correct 47 ms 14428 KB Output is correct
9 Correct 56 ms 14428 KB Output is correct
10 Correct 64 ms 14560 KB Output is correct
11 Correct 65 ms 14424 KB Output is correct
12 Correct 67 ms 14428 KB Output is correct
13 Correct 4 ms 14424 KB Output is correct
14 Correct 4 ms 14428 KB Output is correct
15 Correct 47 ms 14524 KB Output is correct
16 Correct 8 ms 14424 KB Output is correct
17 Correct 8 ms 14428 KB Output is correct
18 Correct 29 ms 14428 KB Output is correct
19 Correct 6 ms 14424 KB Output is correct
20 Correct 18 ms 14428 KB Output is correct
21 Correct 67 ms 14428 KB Output is correct
22 Correct 27 ms 14428 KB Output is correct
23 Correct 58 ms 14552 KB Output is correct
24 Correct 52 ms 14428 KB Output is correct
25 Correct 64 ms 14428 KB Output is correct
26 Correct 64 ms 14428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14428 KB Output is correct
2 Correct 3 ms 14428 KB Output is correct
3 Correct 4 ms 14408 KB Output is correct
4 Correct 58 ms 14548 KB Output is correct
5 Correct 5 ms 14428 KB Output is correct
6 Correct 6 ms 14428 KB Output is correct
7 Correct 7 ms 14428 KB Output is correct
8 Correct 47 ms 14428 KB Output is correct
9 Correct 56 ms 14428 KB Output is correct
10 Correct 64 ms 14560 KB Output is correct
11 Correct 65 ms 14424 KB Output is correct
12 Correct 67 ms 14428 KB Output is correct
13 Correct 4 ms 14424 KB Output is correct
14 Correct 4 ms 14428 KB Output is correct
15 Correct 47 ms 14524 KB Output is correct
16 Correct 8 ms 14424 KB Output is correct
17 Correct 8 ms 14428 KB Output is correct
18 Correct 29 ms 14428 KB Output is correct
19 Correct 6 ms 14424 KB Output is correct
20 Correct 18 ms 14428 KB Output is correct
21 Correct 67 ms 14428 KB Output is correct
22 Correct 27 ms 14428 KB Output is correct
23 Correct 58 ms 14552 KB Output is correct
24 Correct 52 ms 14428 KB Output is correct
25 Correct 64 ms 14428 KB Output is correct
26 Correct 64 ms 14428 KB Output is correct
27 Correct 819 ms 21752 KB Output is correct
28 Correct 843 ms 21740 KB Output is correct
29 Correct 829 ms 14796 KB Output is correct
30 Correct 393 ms 14560 KB Output is correct
31 Correct 319 ms 14560 KB Output is correct
32 Correct 92 ms 14564 KB Output is correct
33 Correct 249 ms 14564 KB Output is correct
34 Correct 366 ms 14560 KB Output is correct
35 Correct 369 ms 14564 KB Output is correct
36 Correct 976 ms 14684 KB Output is correct
37 Correct 963 ms 14816 KB Output is correct
38 Correct 1373 ms 14684 KB Output is correct
39 Correct 1352 ms 14680 KB Output is correct
40 Correct 324 ms 14560 KB Output is correct
41 Correct 417 ms 14684 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14428 KB Output is correct
2 Correct 3 ms 14428 KB Output is correct
3 Correct 4 ms 14408 KB Output is correct
4 Correct 58 ms 14548 KB Output is correct
5 Correct 5 ms 14428 KB Output is correct
6 Correct 6 ms 14428 KB Output is correct
7 Correct 7 ms 14428 KB Output is correct
8 Correct 47 ms 14428 KB Output is correct
9 Correct 56 ms 14428 KB Output is correct
10 Execution timed out 3048 ms 39992 KB Time limit exceeded
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 14428 KB Output is correct
2 Correct 3 ms 14428 KB Output is correct
3 Correct 4 ms 14408 KB Output is correct
4 Correct 58 ms 14548 KB Output is correct
5 Correct 5 ms 14428 KB Output is correct
6 Correct 6 ms 14428 KB Output is correct
7 Correct 7 ms 14428 KB Output is correct
8 Correct 47 ms 14428 KB Output is correct
9 Correct 56 ms 14428 KB Output is correct
10 Correct 64 ms 14560 KB Output is correct
11 Correct 65 ms 14424 KB Output is correct
12 Correct 67 ms 14428 KB Output is correct
13 Correct 4 ms 14424 KB Output is correct
14 Correct 4 ms 14428 KB Output is correct
15 Correct 47 ms 14524 KB Output is correct
16 Correct 8 ms 14424 KB Output is correct
17 Correct 8 ms 14428 KB Output is correct
18 Correct 29 ms 14428 KB Output is correct
19 Correct 6 ms 14424 KB Output is correct
20 Correct 18 ms 14428 KB Output is correct
21 Correct 67 ms 14428 KB Output is correct
22 Correct 27 ms 14428 KB Output is correct
23 Correct 58 ms 14552 KB Output is correct
24 Correct 52 ms 14428 KB Output is correct
25 Correct 64 ms 14428 KB Output is correct
26 Correct 64 ms 14428 KB Output is correct
27 Correct 819 ms 21752 KB Output is correct
28 Correct 843 ms 21740 KB Output is correct
29 Correct 829 ms 14796 KB Output is correct
30 Correct 393 ms 14560 KB Output is correct
31 Correct 319 ms 14560 KB Output is correct
32 Correct 92 ms 14564 KB Output is correct
33 Correct 249 ms 14564 KB Output is correct
34 Correct 366 ms 14560 KB Output is correct
35 Correct 369 ms 14564 KB Output is correct
36 Correct 976 ms 14684 KB Output is correct
37 Correct 963 ms 14816 KB Output is correct
38 Correct 1373 ms 14684 KB Output is correct
39 Correct 1352 ms 14680 KB Output is correct
40 Correct 324 ms 14560 KB Output is correct
41 Correct 417 ms 14684 KB Output is correct
42 Execution timed out 3048 ms 39992 KB Time limit exceeded
43 Halted 0 ms 0 KB -