Submission #1235786

#TimeUsernameProblemLanguageResultExecution timeMemory
1235786demongod_cfSenior Postmen (BOI14_postmen)C++20
100 / 100
431 ms37448 KiB
#include <vector> #include <string> #include <queue> #include <cmath> #include <algorithm> #include <iostream> #include <set> #include <map> #include <stack> using namespace std; #define loop(x) for(int i=0;i<x;i++) #define loop2(x,n) for(int i=x;i<n;i++) int main(){ int n,m;cin>>n>>m; vector<vector<pair<int,int>>>a(n+1); vector<bool> onstack(m); vector<vector<int>> cycles; vector<bool> visited(n+1); loop(m){ int x,y;cin>>x>>y; a[x].push_back({y,i}); a[y].push_back({x,i}); } stack<int> st; st.push(1); vector<int> r; while(!st.empty()){ int x=st.top(); while(!a[x].empty() && onstack[a[x].back().second]){ a[x].pop_back(); } if(a[x].empty()){ r.push_back(x); st.pop(); continue; } else{ st.push(a[x].back().first); onstack[a[x].back().second]=true; a[x].pop_back(); } } loop(r.size()){ int y=r[i]; if(visited[y]){ cycles.push_back(vector<int>()); while (!st.empty() && st.top()!=y){ cycles.back().push_back(st.top()); visited[st.top()]=false; st.pop(); } cycles.back().push_back(y); } else{ visited[y]=true; st.push(y); } } loop(cycles.size()){ for(int u:cycles[i]){ cout<<u<<' '; } cout<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...