#include "meetings.h"
#include<bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define ppb pop_back
#define ii pair<int,int>
#define orta ((bas+son)>>1)
#define sz(x) ((int)x.size())
#define all(x) x.begin(),x.end()
#define inf 1000000000
#define N 300005
using namespace std;
int gsb;
vector<int> u;
vector<multiset<int>> v;
vector<int> sub;
vector<int> f;
struct change {
int a,b,mean;
};
int fcnt(int node,int ata) {
for(auto x:v[node]) {
if(x==ata || f[x]) continue ;
if(sub[x]>gsb/2) return fcnt(x,node);
}
return node;
}
void fsubs(int node,int ata) {
sub[node]=1;
for(auto x:v[node]) {
if(x==ata || f[x]) continue ;
fsubs(x,node);
sub[node]+=sub[x];
}
}
void solve(int node,int nw) {
fsubs(node,0);
gsb=sub[node];
int cnt=fcnt(node,0);
vector<change> q;
f[cnt]=1;
for(auto x:v[cnt]) {
if(f[x]) continue ;
int mid=Query(nw,cnt,x);
if(mid==cnt) continue ;
if(mid==x) {
solve(x,nw);
return ;
}
if(mid==nw) {
q.pb({cnt,nw,1});
q.pb({nw,x,1});
q.pb({cnt,x,-1});
break ;
}
q.pb({cnt,mid,1});
q.pb({mid,x,1});
q.pb({nw,mid,1});
q.pb({cnt,x,-1});
break ;
}
if(!sz(q)) q.pb({cnt,nw,1});
for(auto x:q) {
if(x.mean==1) {
v[x.a].insert(x.b);
v[x.b].insert(x.a);
}
else {
v[x.a].erase(v[x.a].find(x.b));
v[x.b].erase(v[x.b].find(x.a));
}
u[x.a]=u[x.b]=1;
}
}
void Solve(int n) {
u=sub=vector<int>(n,0);
v=vector<multiset<int>>(n);
mt19937 rnd(time(NULL));
vector<int> order;
for(int i=0;i<n;i++) {
order.pb(i);
}
shuffle(all(order),rnd);
int cnt=0;
int root;
for(int i=0;i<n;i++,++cnt) {
if(u[order[i]]) continue ;
if(!cnt) u[root=order[i]]=1;
else if(cnt==1) {
v[root].insert(order[i]);
v[order[i]].insert(root);
u[order[i]]=1;
}
else {
f=vector<int>(n,0);
solve(root,order[i]);
}
}
for(int i=0;i<n;i++) {
for(auto x:v[i]) {
if(x>i) Bridge(i,x);
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
3 |
Correct |
2 ms |
248 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
252 KB |
Output is correct |
7 |
Correct |
2 ms |
248 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
248 KB |
Output is correct |
11 |
Correct |
2 ms |
248 KB |
Output is correct |
12 |
Correct |
2 ms |
248 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
3 |
Correct |
2 ms |
248 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
252 KB |
Output is correct |
7 |
Correct |
2 ms |
248 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
248 KB |
Output is correct |
11 |
Correct |
2 ms |
248 KB |
Output is correct |
12 |
Correct |
2 ms |
248 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
504 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
376 KB |
Output is correct |
19 |
Correct |
2 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
2 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
3 |
Correct |
2 ms |
248 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
252 KB |
Output is correct |
7 |
Correct |
2 ms |
248 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
248 KB |
Output is correct |
11 |
Correct |
2 ms |
248 KB |
Output is correct |
12 |
Correct |
2 ms |
248 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
504 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
376 KB |
Output is correct |
19 |
Correct |
2 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
2 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
9 ms |
504 KB |
Output is correct |
28 |
Correct |
9 ms |
376 KB |
Output is correct |
29 |
Correct |
10 ms |
376 KB |
Output is correct |
30 |
Correct |
9 ms |
376 KB |
Output is correct |
31 |
Correct |
7 ms |
376 KB |
Output is correct |
32 |
Correct |
9 ms |
504 KB |
Output is correct |
33 |
Correct |
12 ms |
504 KB |
Output is correct |
34 |
Correct |
14 ms |
376 KB |
Output is correct |
35 |
Correct |
13 ms |
420 KB |
Output is correct |
36 |
Correct |
8 ms |
376 KB |
Output is correct |
37 |
Correct |
13 ms |
376 KB |
Output is correct |
38 |
Correct |
13 ms |
504 KB |
Output is correct |
39 |
Correct |
13 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1095 ms |
1020 KB |
Output is correct |
2 |
Correct |
1251 ms |
1024 KB |
Output is correct |
3 |
Correct |
1088 ms |
928 KB |
Output is correct |
4 |
Correct |
1083 ms |
1192 KB |
Output is correct |
5 |
Correct |
486 ms |
964 KB |
Output is correct |
6 |
Correct |
403 ms |
1144 KB |
Output is correct |
7 |
Correct |
641 ms |
1020 KB |
Output is correct |
8 |
Correct |
850 ms |
1176 KB |
Output is correct |
9 |
Correct |
771 ms |
1096 KB |
Output is correct |
10 |
Correct |
743 ms |
1136 KB |
Output is correct |
11 |
Correct |
922 ms |
1204 KB |
Output is correct |
12 |
Correct |
931 ms |
1152 KB |
Output is correct |
13 |
Correct |
855 ms |
1092 KB |
Output is correct |
14 |
Correct |
1511 ms |
1272 KB |
Output is correct |
15 |
Correct |
1479 ms |
1020 KB |
Output is correct |
16 |
Correct |
1567 ms |
1032 KB |
Output is correct |
17 |
Correct |
609 ms |
1040 KB |
Output is correct |
18 |
Correct |
1415 ms |
1144 KB |
Output is correct |
19 |
Correct |
1434 ms |
996 KB |
Output is correct |
20 |
Correct |
1769 ms |
1124 KB |
Output is correct |
21 |
Correct |
1925 ms |
972 KB |
Output is correct |
22 |
Correct |
1561 ms |
1068 KB |
Output is correct |
23 |
Correct |
1490 ms |
1072 KB |
Output is correct |
24 |
Correct |
1644 ms |
1032 KB |
Output is correct |
25 |
Correct |
1658 ms |
1064 KB |
Output is correct |
26 |
Correct |
1569 ms |
1016 KB |
Output is correct |
27 |
Correct |
1586 ms |
1144 KB |
Output is correct |
28 |
Correct |
1108 ms |
1144 KB |
Output is correct |
29 |
Correct |
778 ms |
936 KB |
Output is correct |
30 |
Correct |
757 ms |
1152 KB |
Output is correct |
31 |
Correct |
829 ms |
976 KB |
Output is correct |
32 |
Correct |
1359 ms |
1064 KB |
Output is correct |
33 |
Correct |
970 ms |
1176 KB |
Output is correct |
34 |
Correct |
9 ms |
376 KB |
Output is correct |
35 |
Correct |
9 ms |
376 KB |
Output is correct |
36 |
Correct |
10 ms |
504 KB |
Output is correct |
37 |
Correct |
7 ms |
376 KB |
Output is correct |
38 |
Correct |
7 ms |
504 KB |
Output is correct |
39 |
Correct |
8 ms |
376 KB |
Output is correct |
40 |
Correct |
12 ms |
376 KB |
Output is correct |
41 |
Correct |
14 ms |
504 KB |
Output is correct |
42 |
Correct |
13 ms |
424 KB |
Output is correct |
43 |
Correct |
8 ms |
376 KB |
Output is correct |
44 |
Correct |
13 ms |
376 KB |
Output is correct |
45 |
Correct |
13 ms |
380 KB |
Output is correct |
46 |
Correct |
12 ms |
376 KB |
Output is correct |
47 |
Correct |
2 ms |
376 KB |
Output is correct |
48 |
Correct |
2 ms |
376 KB |
Output is correct |
49 |
Correct |
2 ms |
376 KB |
Output is correct |
50 |
Correct |
2 ms |
296 KB |
Output is correct |
51 |
Correct |
2 ms |
376 KB |
Output is correct |
52 |
Correct |
3 ms |
368 KB |
Output is correct |
53 |
Correct |
2 ms |
376 KB |
Output is correct |
54 |
Correct |
2 ms |
376 KB |
Output is correct |
55 |
Correct |
2 ms |
376 KB |
Output is correct |
56 |
Correct |
2 ms |
376 KB |
Output is correct |
57 |
Correct |
3 ms |
376 KB |
Output is correct |
58 |
Correct |
2 ms |
376 KB |
Output is correct |
59 |
Correct |
3 ms |
376 KB |
Output is correct |
60 |
Correct |
2 ms |
248 KB |
Output is correct |
61 |
Correct |
2 ms |
376 KB |
Output is correct |
62 |
Correct |
2 ms |
248 KB |
Output is correct |
63 |
Correct |
2 ms |
248 KB |
Output is correct |
64 |
Correct |
2 ms |
248 KB |
Output is correct |
65 |
Correct |
2 ms |
248 KB |
Output is correct |
66 |
Correct |
2 ms |
248 KB |
Output is correct |
67 |
Correct |
2 ms |
248 KB |
Output is correct |
68 |
Correct |
2 ms |
248 KB |
Output is correct |
69 |
Correct |
2 ms |
248 KB |
Output is correct |
70 |
Correct |
2 ms |
252 KB |
Output is correct |
71 |
Correct |
2 ms |
376 KB |
Output is correct |
72 |
Correct |
2 ms |
248 KB |
Output is correct |