# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
65509 | 3zp | Potemkin cycle (CEOI15_indcyc) | C++14 | 1072 ms | 7288 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
vector<int> c,C, v[1009];
int n, m;
stack<int> S;
int f[1009][1009];
int F[1009], P[1009];
int G[1009];
int a[200009], b[200009];
void dfs(int x){
F[x] = 1;
c.push_back(x);
for(int i = 0; i < v[x].size(); i++)
if(!F[v[x][i]]) dfs(v[x][i]);
}
void dfs1(int x, int en){
F[x] = 1;
S.push(x);
if(x == en){
while(S.size())
{
C.push_back(S.top());
S.pop();
}
return;
}
for(int i = 0; i < v[x].size(); i++)
if(!F[v[x][i]]) dfs1(v[x][i], en);
S.pop();
}
void fnd(int x, int y, int z){
/* for(int i = 0; i <= n; i++)
F[i] = 1;
for(int i = 0; i < c.size(); i++)
F[c[i]] = 0;
F[x] = 0;
F[y] = 0;
F[z] = 0;
dfs1(y, z);
for(int i = 0; i < C.size(); i++)
P[C[i]] = i;
int X = 0;
/*while(1){
int k = C[X], m1 = k, m2 = X;
cout << k<<" ";
if(X == C.size() - 1) break;
for(int i = 0; i < v[k].size(); i++){
int p = v[k][i];
if(P[p] > m2){
m2 = P[p];
m1 = p;
}
}
X = m2;
}
cout << x << endl;*/
}
main(){
cin >> n >> m;
for(int i = 1; i <= m; i++){
scanf("%d%d",&a[i],&b[i]);
f[a[i]][b[i]] = 1;
f[b[i]][a[i]] = 1;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++)
F[j] = 0, v[j].clear();
F[i] = 1;
for(int j = 1; j <= m; j++){
int x = a[j], y = b[j];
if(x == i){
F[y] = 2;
continue;
}
if(y == i){
F[x] = 2;
continue;
}
if(f[i][x] && f[i][y]) continue;
v[x].push_back(y);
v[y].push_back(x);
}
for(int j = 1; j <= n; j++){
if(!F[j]){
c.clear();
dfs(j);
vector<int> g;
for(int k = 0; k < c.size(); k++){
for(int t = 0; t < v[c[k]].size(); t++){
int x = v[c[k]][t];
if(G[x] == 0 && F[x] == 2){
g.push_back(x);
G[x] = 1;
}
}
}
for(int i = 0; i < g.size(); i++)
G[g[i]] = 0;
for(int i1 = 0; i1 < g.size(); i1++){
for(int j = i1 + 1; j < g.size(); j++){
if(f[g[i1]][g[j]]) continue;
fnd(i, g[i1], g[j]);
return 0;
}
}
}
}
}
cout<<"no"<<endl;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |