Submission #244447

#TimeUsernameProblemLanguageResultExecution timeMemory
244447SomeoneUnknownPotemkin cycle (CEOI15_indcyc)C++14
30 / 100
43 ms1280 KiB
#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]; for(int i = 1; i <= n; ++i) ved[i] = 0; //unvisited 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); } 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)

indcyc.cpp: In function 'int main()':
indcyc.cpp:43:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int j = 0; j < adjlist[ving].size(); ++j){
                            ~~^~~~~~~~~~~~~~~~~~~~~~
indcyc.cpp:69:38: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                     for(int k = 0; k < adjlist[s.top()].size(); k++){
                                    ~~^~~~~~~~~~~~~~~~~~~~~~~~~
indcyc.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &n, &r);
     ~~~~~^~~~~~~~~~~~~~~~~
indcyc.cpp:27:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &a, &b);
         ~~~~~^~~~~~~~~~~~~~~~~
indcyc.cpp:70:25: warning: 'last' may be used uninitialized in this function [-Wmaybe-uninitialized]
                         if(adjlist[s.top()][k] == last) djoint = false;
                         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...