# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
244456 | SomeoneUnknown | Potemkin cycle (CEOI15_indcyc) | C++14 | 36 ms | 1792 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> adjlist[1001];
/*bool isadj(int a, int b){
int lo = -1;
int hi = adjlist[a].size();
while(hi-lo > 1){
int mid = (hi+lo)/2;
if(adjlist[a][mid] == b) return true;
if(adjlist[a][mid] < b){
lo = mid;
}else{
hi = mid;
}
}
return false;
}*/
int main(){
int n, r;
scanf("%d %d", &n, &r);
int ved[n+1];
bool isadj[n+1][n+1];
for(int i = 1; i <= n; ++i){
ved[i] = 0; //unvisited
for(int j = 1; j <= n; ++j){
isadj[i][j] = false;
}
isadj[i][i] = true;
}
for(int i = 0; i < r; ++i){
int a, b;
scanf("%d %d", &a, &b);
adjlist[a].push_back(b);
adjlist[b].push_back(a);
isadj[a][b] = true;
}
for(int i = 1; i <= n; ++i){
sort(adjlist[i].begin(), adjlist[i].end());
}
for(int i = 1; i <= n; ++i){
if(ved[i] != 0) continue;
ved[i] = -1; //root
queue<int> tovisit;
tovisit.push(i);
while(!tovisit.empty()){
int ving = tovisit.front();
//printf("ving = %d\n", ving);
tovisit.pop();
for(int j = 0; j < adjlist[ving].size(); ++j){
int nghbr = adjlist[ving][j];
if(ved[nghbr] == 0){
ved[nghbr] = ving;
tovisit.push(nghbr);
}else if(ved[ving] != nghbr && !isadj[ved[nghbr]][ving]){
stack<int> s;
queue<int> e;
//s.push(ving);
//e.push(nghbr);
int last;
int sptr = ving;
int eptr = nghbr;
while(sptr != eptr){
e.push(eptr);
//printf("e: %d\n", eptr);
last = eptr;
eptr = ved[eptr];
if(sptr == eptr) break;
s.push(sptr);
//printf("s: %d\n", sptr);
sptr = ved[sptr];
}
//return 5; //doesnt reach
bool djoint = true;
for(int k = 0; k < adjlist[s.top()].size(); k++){
if(adjlist[s.top()][k] == last) djoint = false;
}
if(djoint)
printf("%d ", sptr);
while(!s.empty()){
printf("%d ", s.top());
s.pop();
}
while(!e.empty()){
printf("%d ", e.front());
e.pop();
}
return 0;
}
}
}
}
printf("no");
}
/*
5 5
1 2
2 3
2 4
3 5
4 5
*/
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... |