Submission #1262414

#TimeUsernameProblemLanguageResultExecution timeMemory
1262414ivano_bozhinovski어르신 집배원 (BOI14_postmen)C++20
100 / 100
478 ms86340 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define pb push_back #define pii pair<int,int> typedef long long ll; const int maxn=5e5+5; vector<vector<int>> tours; vector<pii> adj[maxn]; stack<int> s; int used=0; vector<bool> erased; vector<bool> visited; vector<int> vek; void dfs(int v,int par,int e) { s.push(v); visited[v]=true; if(e!=-1) { erased[e]=true; used++; } for(pii p:adj[v]) { if(p.first==par||erased[p.second])continue; if(visited[p.first]) { erased[p.second]=true; used++; while(s.top()!=p.first) { vek.pb(s.top()); visited[s.top()]=false; s.pop(); } return; } dfs(p.first,v,p.second); if(s.top()!=v)return; if(!vek.empty()) { vek.pb(v); tours.pb(vek); vek.clear(); } } s.pop(); visited[v]=false; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m; cin>>n>>m; int u,v; for(int i=0;i<m;i++) { cin>>u>>v; adj[u].pb({v,i}); adj[v].pb({u,i}); } erased.resize(m); visited.resize(n+1); //u=-1; /*for(int i=1;i<=n;i++) { if(adj[i]%2==1) { u=i; break; } }*/ ///useless, mora site da se parni za euler cycle(ne tour) //if(u==-1)u=1; //dfs(u,-1,-1); while(used<m) { for(int i=1;i<=n;i++) { dfs(i,-1,-1); } } for(auto v:tours) { for(auto x:v)cout<<x<<' '; cout<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...