// Alir3za.Zar3 -> Shiraz , Iran
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5+7;
int n,m; bool mrk[N];
vector<pair<int,int>> e[N];
vector<int> euler,vis[N];
vector<vector<int>> out;
void iN ()
{
cin >> n >> m;
for (int i=1; i<=m; i++)
{
int u,v; cin >> u >> v;
e[u].push_back({v,i});
e[v].push_back({u,i});
}
}
void euler_Tour ()
{
vector<int> st;
st.push_back(1);
while (!st.empty())
{
int v = st.back();
while (!e[v].empty() and mrk[e[v].back().second])
e[v].pop_back();
if (e[v].empty())
{
st.pop_back();
if (vis[v].empty())
{
euler.push_back(v);
vis[v].push_back(euler.size());
}
else
{
vector<int> cycle;
cycle.push_back(v);
int sz = euler.size();
int limit = vis[v].back();
while (sz > limit)
{
sz--;
vis[euler.back()].pop_back();
cycle.push_back(euler.back());
euler.pop_back();
}
out.push_back(cycle);
}
}
else
{
mrk[e[v].back().second] = true;
st.push_back(e[v].back().first);
}
}
}
void ouT ()
{
for (auto cycle : out)
{
for (auto v : cycle)
cout << v << ' ';
cout << '\n';
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
iN();
euler_Tour();
ouT();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |