# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
592874 |
2022-07-09T17:21:07 Z |
SlavicG |
Keys (IOI21_keys) |
C++17 |
|
1134 ms |
92524 KB |
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
#define forn(i, n) for(int i = 0; i < n; ++i)
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
const int N = 5e5 + 10;
int p[N];
int get(int a) {return p[a] = (a == p[a] ? a : get(p[a]));}
void merge(int a, int b) {
a = get(a), b = get(b);
p[a] = b;
}
vector<pair<int, int>> adj[N];
int cnt[N], s;
vector<int> require[N];
bool vis[N], have[N];
vector<int> vis_moment, have_moment, key_moment;
int mn = INT_MAX;
vector<int> component;
bool paiu = false, return_trick = false;
vector<pair<int, int>> bruh;
void dfs(int u, vector<int>& r) {
if(return_trick) return;
component.pb(u);
//assert(vis[u] == false);
vis[u] = true;
vis_moment.pb(u);
++cnt[s];
if(get(u) != get(s) && !paiu) {
return_trick = true;
//merge(s, u);
bruh.pb({s, u});
return;
}
if(sz(require[r[u]])) {
for(auto x: require[r[u]]) {
if(!vis[x]) {
dfs(x, r);
if(return_trick) return;
}
}
require[r[u]].clear();
}
if(!have[r[u]]) {
have[r[u]] = true;
have_moment.pb(r[u]);
}
for(auto x: adj[u]) {
int v = x.first, c = x.second;
if(!vis[v]) {
if(have[c]) {
dfs(v, r);
if(return_trick) return;
} else {
require[c].pb(v);
key_moment.pb(c);
if(return_trick) return;
}
}
}
}
void solve(int start, vector<int>& r) {
for(auto x: key_moment) require[x].clear();
if(!paiu) for(auto x: vis_moment) vis[x] = false;
for(auto x: have_moment) have[x] = false;
vis_moment.clear();
key_moment.clear();
have_moment.clear();
component.clear();
return_trick = false;
s = start;
dfs(start, r);
}
bool solved[N];
vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) {
for(int i = 0; i < sz(u); ++i) {
adj[u[i]].pb({v[i], c[i]});
adj[v[i]].pb({u[i], c[i]});
}
int n = sz(r);
forn(i, n) p[i] = i;
vector<int> ans(n, 0);
for(int iter = 0; iter < 20; ++iter) {
for(int i = 0; i < n; ++i) {
if(get(i) == i) {
solve(i, r);
}
}
if(!sz(bruh)) break;
for(auto x: bruh) merge(x.first, x.second);
bruh.clear();
}
forn(i, n) cnt[i] = 0;
paiu = true;
for(auto x: vis_moment) vis[x] = false;
vis_moment.clear();
for(int i = 0; i < n; ++i) {
if(!solved[i] && get(i) == i) {
solve(i, r);
for(auto x: component) {
solved[x] = true;
cnt[x] = cnt[i];
}
mn = min(mn, cnt[i]);
}
}
for(int i = 0; i < n; ++i) {
if(solved[i] && cnt[i] == mn) ans[i] = 1;
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23768 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
4 |
Correct |
14 ms |
23736 KB |
Output is correct |
5 |
Correct |
13 ms |
23764 KB |
Output is correct |
6 |
Correct |
12 ms |
23816 KB |
Output is correct |
7 |
Correct |
12 ms |
23764 KB |
Output is correct |
8 |
Correct |
13 ms |
23892 KB |
Output is correct |
9 |
Correct |
11 ms |
23840 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23768 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
4 |
Correct |
14 ms |
23736 KB |
Output is correct |
5 |
Correct |
13 ms |
23764 KB |
Output is correct |
6 |
Correct |
12 ms |
23816 KB |
Output is correct |
7 |
Correct |
12 ms |
23764 KB |
Output is correct |
8 |
Correct |
13 ms |
23892 KB |
Output is correct |
9 |
Correct |
11 ms |
23840 KB |
Output is correct |
10 |
Correct |
11 ms |
23764 KB |
Output is correct |
11 |
Correct |
14 ms |
23796 KB |
Output is correct |
12 |
Correct |
12 ms |
23836 KB |
Output is correct |
13 |
Correct |
13 ms |
23820 KB |
Output is correct |
14 |
Correct |
11 ms |
23724 KB |
Output is correct |
15 |
Correct |
12 ms |
23840 KB |
Output is correct |
16 |
Correct |
14 ms |
23744 KB |
Output is correct |
17 |
Correct |
11 ms |
23732 KB |
Output is correct |
18 |
Correct |
12 ms |
23764 KB |
Output is correct |
19 |
Correct |
12 ms |
23724 KB |
Output is correct |
20 |
Correct |
13 ms |
23764 KB |
Output is correct |
21 |
Correct |
16 ms |
23820 KB |
Output is correct |
22 |
Correct |
12 ms |
23828 KB |
Output is correct |
23 |
Correct |
12 ms |
23864 KB |
Output is correct |
24 |
Correct |
13 ms |
23756 KB |
Output is correct |
25 |
Correct |
13 ms |
23788 KB |
Output is correct |
26 |
Correct |
12 ms |
23764 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23768 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
4 |
Correct |
14 ms |
23736 KB |
Output is correct |
5 |
Correct |
13 ms |
23764 KB |
Output is correct |
6 |
Correct |
12 ms |
23816 KB |
Output is correct |
7 |
Correct |
12 ms |
23764 KB |
Output is correct |
8 |
Correct |
13 ms |
23892 KB |
Output is correct |
9 |
Correct |
11 ms |
23840 KB |
Output is correct |
10 |
Correct |
11 ms |
23764 KB |
Output is correct |
11 |
Correct |
14 ms |
23796 KB |
Output is correct |
12 |
Correct |
12 ms |
23836 KB |
Output is correct |
13 |
Correct |
13 ms |
23820 KB |
Output is correct |
14 |
Correct |
11 ms |
23724 KB |
Output is correct |
15 |
Correct |
12 ms |
23840 KB |
Output is correct |
16 |
Correct |
14 ms |
23744 KB |
Output is correct |
17 |
Correct |
11 ms |
23732 KB |
Output is correct |
18 |
Correct |
12 ms |
23764 KB |
Output is correct |
19 |
Correct |
12 ms |
23724 KB |
Output is correct |
20 |
Correct |
13 ms |
23764 KB |
Output is correct |
21 |
Correct |
16 ms |
23820 KB |
Output is correct |
22 |
Correct |
12 ms |
23828 KB |
Output is correct |
23 |
Correct |
12 ms |
23864 KB |
Output is correct |
24 |
Correct |
13 ms |
23756 KB |
Output is correct |
25 |
Correct |
13 ms |
23788 KB |
Output is correct |
26 |
Correct |
12 ms |
23764 KB |
Output is correct |
27 |
Correct |
14 ms |
24020 KB |
Output is correct |
28 |
Correct |
14 ms |
23972 KB |
Output is correct |
29 |
Correct |
14 ms |
24020 KB |
Output is correct |
30 |
Correct |
14 ms |
23892 KB |
Output is correct |
31 |
Correct |
13 ms |
23780 KB |
Output is correct |
32 |
Correct |
12 ms |
23764 KB |
Output is correct |
33 |
Correct |
15 ms |
23888 KB |
Output is correct |
34 |
Correct |
15 ms |
24032 KB |
Output is correct |
35 |
Correct |
13 ms |
23940 KB |
Output is correct |
36 |
Correct |
13 ms |
23904 KB |
Output is correct |
37 |
Correct |
13 ms |
24148 KB |
Output is correct |
38 |
Correct |
14 ms |
23892 KB |
Output is correct |
39 |
Correct |
14 ms |
24224 KB |
Output is correct |
40 |
Correct |
13 ms |
23880 KB |
Output is correct |
41 |
Correct |
13 ms |
23976 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23768 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
4 |
Correct |
14 ms |
23736 KB |
Output is correct |
5 |
Correct |
13 ms |
23764 KB |
Output is correct |
6 |
Correct |
12 ms |
23816 KB |
Output is correct |
7 |
Correct |
12 ms |
23764 KB |
Output is correct |
8 |
Correct |
13 ms |
23892 KB |
Output is correct |
9 |
Correct |
11 ms |
23840 KB |
Output is correct |
10 |
Correct |
225 ms |
49976 KB |
Output is correct |
11 |
Correct |
1134 ms |
58444 KB |
Output is correct |
12 |
Correct |
62 ms |
29000 KB |
Output is correct |
13 |
Correct |
405 ms |
49400 KB |
Output is correct |
14 |
Correct |
205 ms |
86472 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23768 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
4 |
Correct |
14 ms |
23736 KB |
Output is correct |
5 |
Correct |
13 ms |
23764 KB |
Output is correct |
6 |
Correct |
12 ms |
23816 KB |
Output is correct |
7 |
Correct |
12 ms |
23764 KB |
Output is correct |
8 |
Correct |
13 ms |
23892 KB |
Output is correct |
9 |
Correct |
11 ms |
23840 KB |
Output is correct |
10 |
Correct |
11 ms |
23764 KB |
Output is correct |
11 |
Correct |
14 ms |
23796 KB |
Output is correct |
12 |
Correct |
12 ms |
23836 KB |
Output is correct |
13 |
Correct |
13 ms |
23820 KB |
Output is correct |
14 |
Correct |
11 ms |
23724 KB |
Output is correct |
15 |
Correct |
12 ms |
23840 KB |
Output is correct |
16 |
Correct |
14 ms |
23744 KB |
Output is correct |
17 |
Correct |
11 ms |
23732 KB |
Output is correct |
18 |
Correct |
12 ms |
23764 KB |
Output is correct |
19 |
Correct |
12 ms |
23724 KB |
Output is correct |
20 |
Correct |
13 ms |
23764 KB |
Output is correct |
21 |
Correct |
16 ms |
23820 KB |
Output is correct |
22 |
Correct |
12 ms |
23828 KB |
Output is correct |
23 |
Correct |
12 ms |
23864 KB |
Output is correct |
24 |
Correct |
13 ms |
23756 KB |
Output is correct |
25 |
Correct |
13 ms |
23788 KB |
Output is correct |
26 |
Correct |
12 ms |
23764 KB |
Output is correct |
27 |
Correct |
14 ms |
24020 KB |
Output is correct |
28 |
Correct |
14 ms |
23972 KB |
Output is correct |
29 |
Correct |
14 ms |
24020 KB |
Output is correct |
30 |
Correct |
14 ms |
23892 KB |
Output is correct |
31 |
Correct |
13 ms |
23780 KB |
Output is correct |
32 |
Correct |
12 ms |
23764 KB |
Output is correct |
33 |
Correct |
15 ms |
23888 KB |
Output is correct |
34 |
Correct |
15 ms |
24032 KB |
Output is correct |
35 |
Correct |
13 ms |
23940 KB |
Output is correct |
36 |
Correct |
13 ms |
23904 KB |
Output is correct |
37 |
Correct |
13 ms |
24148 KB |
Output is correct |
38 |
Correct |
14 ms |
23892 KB |
Output is correct |
39 |
Correct |
14 ms |
24224 KB |
Output is correct |
40 |
Correct |
13 ms |
23880 KB |
Output is correct |
41 |
Correct |
13 ms |
23976 KB |
Output is correct |
42 |
Correct |
225 ms |
49976 KB |
Output is correct |
43 |
Correct |
1134 ms |
58444 KB |
Output is correct |
44 |
Correct |
62 ms |
29000 KB |
Output is correct |
45 |
Correct |
405 ms |
49400 KB |
Output is correct |
46 |
Correct |
205 ms |
86472 KB |
Output is correct |
47 |
Correct |
12 ms |
23764 KB |
Output is correct |
48 |
Correct |
13 ms |
23764 KB |
Output is correct |
49 |
Correct |
12 ms |
23764 KB |
Output is correct |
50 |
Correct |
178 ms |
71180 KB |
Output is correct |
51 |
Correct |
204 ms |
70568 KB |
Output is correct |
52 |
Correct |
242 ms |
46988 KB |
Output is correct |
53 |
Correct |
244 ms |
47028 KB |
Output is correct |
54 |
Correct |
251 ms |
46912 KB |
Output is correct |
55 |
Correct |
263 ms |
51392 KB |
Output is correct |
56 |
Correct |
336 ms |
51924 KB |
Output is correct |
57 |
Correct |
299 ms |
49212 KB |
Output is correct |
58 |
Correct |
310 ms |
61880 KB |
Output is correct |
59 |
Correct |
370 ms |
60480 KB |
Output is correct |
60 |
Correct |
333 ms |
74756 KB |
Output is correct |
61 |
Correct |
397 ms |
74708 KB |
Output is correct |
62 |
Correct |
403 ms |
46388 KB |
Output is correct |
63 |
Correct |
185 ms |
53804 KB |
Output is correct |
64 |
Correct |
16 ms |
24916 KB |
Output is correct |
65 |
Correct |
15 ms |
24916 KB |
Output is correct |
66 |
Correct |
412 ms |
52648 KB |
Output is correct |
67 |
Correct |
31 ms |
30536 KB |
Output is correct |
68 |
Correct |
45 ms |
35080 KB |
Output is correct |
69 |
Correct |
384 ms |
67388 KB |
Output is correct |
70 |
Correct |
75 ms |
46232 KB |
Output is correct |
71 |
Correct |
206 ms |
92524 KB |
Output is correct |
72 |
Correct |
403 ms |
67452 KB |
Output is correct |
73 |
Correct |
441 ms |
52488 KB |
Output is correct |