Submission #11591

#TimeUsernameProblemLanguageResultExecution timeMemory
11591gs14004Senior Postmen (BOI14_postmen)C++98
100 / 100
427 ms25500 KiB
#include <cstdio> #include <vector> #include <stack> #include <cstring> using namespace std; int n,m; int st[1000005], back[1000005], link[1000005], v[500005], nex[1000005], sz; vector<int> cyc, temp; void add_edge(int s, int e){ sz++; link[sz] = e; back[sz] = st[s]; st[s] = sz; nex[back[sz]] = sz; sz++; link[sz] = s; back[sz] = st[e]; st[e] = sz; nex[back[sz]] = sz; } void f(int x){ stack<int> s; s.push(1); while (!s.empty()) { int x = s.top(); int p = st[x]; int pushed = 0; while (p) { int pos = link[p]; int q = (p+1)/2; int r = p; if(p&1) r++; else r--; st[x] = p = back[p]; if(r == st[pos]){ st[pos] = back[r]; } else{ int s = nex[r]; back[s] = back[r]; nex[back[r]] = s; } if(!v[q]){ v[q]=1; s.push(pos); pushed++; break; } } if(!pushed) s.pop(); if(!pushed) cyc.push_back(x); } } int vis[500005]; int main(){ scanf("%d %d",&n,&m); for (int i=0; i<m; i++) { int s,e; scanf("%d %d",&s,&e); add_edge(s,e); } f(1); for (int i=0; i<cyc.size(); i++) { temp.push_back(cyc[i]); if(vis[cyc[i]]){ printf("%d",temp.back()); temp.pop_back(); while(temp.back() != cyc[i]){ printf(" %d",temp.back()); vis[temp.back()] = 0; temp.pop_back(); if(temp.back() == cyc[i]) printf("\n"); } } else vis[cyc[i]] = 1; } }

Compilation message (stderr)

postmen.cpp: In function 'int main()':
postmen.cpp:62:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0; i<cyc.size(); i++) {
                   ~^~~~~~~~~~~
postmen.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~~
postmen.cpp:58:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d",&s,&e);
         ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...