//#include "grader.h"
#include <bits/stdc++.h>
using namespace std;
const int N=1000006;
int p[12][N],sz[12][N],deg[12][N],degcn[12][N],n,comp[12],qanak,an;
vector<int> g[N],d3;
bool no=false,col[N],cnch[N],bl;
int get_par(int v,int k){
if (p[k][v]==v)return v;
return p[k][v]=get_par(p[k][v],k);
}
void unite (int a,int b,int k=0){
a=get_par(a,k);
b=get_par(b,k);
if (a!=b){
comp[k]--;
if (sz[k][b]>sz[k][a])swap(a,b);
p[k][b]=a;
sz[k][a]+=sz[k][b];
}
else if (k==0){
//cout<<"hi"<<endl;
if (bl)an=0;
else {
an=sz[0][a];
bl=true;
}
}
}
void Init(int N_) {
n=N_;
degcn[0][0]=n;
comp[0]=n;
for (int i=0;i<n;i++){
p[0][i]=i;
sz[0][i]=1;
}
}
void make_dsu(int b,int k){
comp[k]=n-1;
for (int i=0;i<n;i++){
p[k][i]=i;
sz[k][i]=i;
}
for (int i=0;i<n;i++){
if (i==b)continue;
for (int j=0;j<g[i].size();j++){
if (g[i][j]==b)continue;
unite(i,g[i][j],k);
deg[k][i]++;
deg[k][g[i][j]]++;
//if (b==1)
//cout<<"hi "<<deg[k][i]<<" "<<deg[k][g[i][j]]<<" "<<i<<" "<<g[i][j]<<endl;
}
}
for (int i=0;i<n;i++){
deg[k][i]/=2;
if (i==b)continue;
degcn[k][deg[k][i]]++;
//cout<<k<<" "<<degcn[k][deg[k][i]]<<" ";
}
//cout<<endl;
}
void Link(int a, int b) {
//if (no) return;
g[a].push_back(b);
g[b].push_back(a);
deg[0][a]++;
deg[0][b]++;
degcn[0][deg[0][a]-1]--;
degcn[0][deg[0][b]-1]--;
degcn[0][deg[0][a]]++;
degcn[0][deg[0][b]]++;
unite(a,b);
vector<int> v;
if (deg[0][a]==3 && qanak<1){
//cout<<a<<"A"<<endl;
qanak++;
col[a]=true;
d3.push_back(a);
make_dsu(a,d3.size());
v.push_back(d3.size());
cnch[d3.size()]=true;
for (int i=0;i<g[a].size();i++){
if (col[g[a][i]])continue;
//cout<<g[a][i]<<" ";
col[g[a][i]]=true;
d3.push_back(g[a][i]);
v.push_back(d3.size());
cnch[d3.size()]=true;
make_dsu(g[a][i],d3.size());
}
//cout<<endl;
}
if (deg[0][b]==3 && qanak<1){
//cout<<a<<"A"<<endl;
qanak++;
col[b]=true;
d3.push_back(b);
make_dsu(b,d3.size());
v.push_back(d3.size());
cnch[d3.size()]=true;
for (int i=0;i<g[b].size();i++){
if (col[g[b][i]])continue;
//cout<<g[b][i]<<" ";
col[g[b][i]]=true;
d3.push_back(g[b][i]);
//cout<<d3.size()<<" ";
v.push_back(d3.size());
cnch[d3.size()]=true;
make_dsu(g[b][i],d3.size());
}
//cout<<endl;
}
for (int i=0;i<d3.size();i++){
i++;
if (a==d3[i-1] || b==d3[i-1] || cnch[i])
{
i--;
continue;
}
deg[i][a]++;
deg[i][b]++;
degcn[i][deg[i][a]-1]--;
degcn[i][deg[i][b]-1]--;
degcn[i][deg[i][a]]++;
degcn[i][deg[i][b]]++;
unite(a,b,i);
i--;
}
for (int i=0;i<v.size();i++)cnch[v[i]]=false;
//cout<<d3.size()<<endl;
}
int CountCritical() {
//if (no)return 0;
if (d3.size()==0){
if (an) return an;
if (degcn[0][0]+degcn[0][1]/2==comp[0]) return n;
return 0;
}
int ans=0;
//cout<<d3.size()<<endl;
for (int i=0;i<d3.size();i++){
//cout<<d3[i]<<" "<<degcn[i+1][2]<<" "<<degcn[i+1][1]<<" "<<degcn[i+1][0]<<endl;
if (degcn[i+1][2]+degcn[i+1][1]+degcn[i+1][0]!=n-1)continue;
if (degcn[i+1][0]+degcn[i+1][1]/2==comp[i+1]){
ans++;
}
}
//cout<<endl;
return ans;
}
Compilation message
rings.cpp: In function 'void make_dsu(int, int)':
rings.cpp:54:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int j=0;j<g[i].size();j++){
~^~~~~~~~~~~~
rings.cpp: In function 'void Link(int, int)':
rings.cpp:92:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<g[a].size();i++){
~^~~~~~~~~~~~
rings.cpp:111:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<g[b].size();i++){
~^~~~~~~~~~~~
rings.cpp:125:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<d3.size();i++){
~^~~~~~~~~~
rings.cpp:141:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<v.size();i++)cnch[v[i]]=false;
~^~~~~~~~~
rings.cpp: In function 'int CountCritical()':
rings.cpp:154:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0;i<d3.size();i++){
~^~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
23800 KB |
Output is correct |
2 |
Correct |
25 ms |
24572 KB |
Output is correct |
3 |
Correct |
24 ms |
24572 KB |
Output is correct |
4 |
Correct |
23 ms |
24572 KB |
Output is correct |
5 |
Correct |
23 ms |
24572 KB |
Output is correct |
6 |
Correct |
23 ms |
24572 KB |
Output is correct |
7 |
Correct |
22 ms |
24572 KB |
Output is correct |
8 |
Correct |
23 ms |
24572 KB |
Output is correct |
9 |
Correct |
25 ms |
24624 KB |
Output is correct |
10 |
Correct |
26 ms |
24640 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
498 ms |
46528 KB |
Output is correct |
2 |
Correct |
3221 ms |
96320 KB |
Output is correct |
3 |
Execution timed out |
4035 ms |
109132 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
23800 KB |
Output is correct |
2 |
Correct |
25 ms |
24572 KB |
Output is correct |
3 |
Correct |
24 ms |
24572 KB |
Output is correct |
4 |
Correct |
23 ms |
24572 KB |
Output is correct |
5 |
Correct |
23 ms |
24572 KB |
Output is correct |
6 |
Correct |
23 ms |
24572 KB |
Output is correct |
7 |
Correct |
22 ms |
24572 KB |
Output is correct |
8 |
Correct |
23 ms |
24572 KB |
Output is correct |
9 |
Correct |
25 ms |
24624 KB |
Output is correct |
10 |
Correct |
26 ms |
24640 KB |
Output is correct |
11 |
Correct |
26 ms |
109132 KB |
Output is correct |
12 |
Correct |
30 ms |
109132 KB |
Output is correct |
13 |
Correct |
31 ms |
109132 KB |
Output is correct |
14 |
Correct |
28 ms |
109132 KB |
Output is correct |
15 |
Correct |
29 ms |
109132 KB |
Output is correct |
16 |
Correct |
38 ms |
109132 KB |
Output is correct |
17 |
Correct |
28 ms |
109132 KB |
Output is correct |
18 |
Correct |
33 ms |
109132 KB |
Output is correct |
19 |
Correct |
27 ms |
109132 KB |
Output is correct |
20 |
Correct |
30 ms |
109132 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
23800 KB |
Output is correct |
2 |
Correct |
25 ms |
24572 KB |
Output is correct |
3 |
Correct |
24 ms |
24572 KB |
Output is correct |
4 |
Correct |
23 ms |
24572 KB |
Output is correct |
5 |
Correct |
23 ms |
24572 KB |
Output is correct |
6 |
Correct |
23 ms |
24572 KB |
Output is correct |
7 |
Correct |
22 ms |
24572 KB |
Output is correct |
8 |
Correct |
23 ms |
24572 KB |
Output is correct |
9 |
Correct |
25 ms |
24624 KB |
Output is correct |
10 |
Correct |
26 ms |
24640 KB |
Output is correct |
11 |
Correct |
26 ms |
109132 KB |
Output is correct |
12 |
Correct |
30 ms |
109132 KB |
Output is correct |
13 |
Correct |
31 ms |
109132 KB |
Output is correct |
14 |
Correct |
28 ms |
109132 KB |
Output is correct |
15 |
Correct |
29 ms |
109132 KB |
Output is correct |
16 |
Correct |
38 ms |
109132 KB |
Output is correct |
17 |
Correct |
28 ms |
109132 KB |
Output is correct |
18 |
Correct |
33 ms |
109132 KB |
Output is correct |
19 |
Correct |
27 ms |
109132 KB |
Output is correct |
20 |
Correct |
30 ms |
109132 KB |
Output is correct |
21 |
Correct |
44 ms |
109132 KB |
Output is correct |
22 |
Correct |
57 ms |
109132 KB |
Output is correct |
23 |
Correct |
64 ms |
109132 KB |
Output is correct |
24 |
Correct |
100 ms |
109132 KB |
Output is correct |
25 |
Correct |
43 ms |
109132 KB |
Output is correct |
26 |
Correct |
91 ms |
109132 KB |
Output is correct |
27 |
Correct |
72 ms |
109132 KB |
Output is correct |
28 |
Correct |
94 ms |
109132 KB |
Output is correct |
29 |
Correct |
71 ms |
109132 KB |
Output is correct |
30 |
Correct |
88 ms |
109132 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
23800 KB |
Output is correct |
2 |
Correct |
25 ms |
24572 KB |
Output is correct |
3 |
Correct |
24 ms |
24572 KB |
Output is correct |
4 |
Correct |
23 ms |
24572 KB |
Output is correct |
5 |
Correct |
23 ms |
24572 KB |
Output is correct |
6 |
Correct |
23 ms |
24572 KB |
Output is correct |
7 |
Correct |
22 ms |
24572 KB |
Output is correct |
8 |
Correct |
23 ms |
24572 KB |
Output is correct |
9 |
Correct |
25 ms |
24624 KB |
Output is correct |
10 |
Correct |
26 ms |
24640 KB |
Output is correct |
11 |
Correct |
498 ms |
46528 KB |
Output is correct |
12 |
Correct |
3221 ms |
96320 KB |
Output is correct |
13 |
Execution timed out |
4035 ms |
109132 KB |
Time limit exceeded |
14 |
Halted |
0 ms |
0 KB |
- |