Pagini recente » Cod sursa (job #188509) | Cod sursa (job #2705405) | Cod sursa (job #1894996)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");
vector<int> G[100001];
stack <int> st;
int n,m,x,y;
void ReadGraph()
{
fi>>n>>m;
for(int i =1; i<=m; i++)
{
fi>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
int Verif_Eulerian()
{
for(int i=1; i<=n; i++)
if(G[i].size() % 2 == 1) return 0;
return 1;
}
void Euler()
{
st.push(1);
while (!st.empty())
{
x=st.top();
if (G[x].empty())
{
st.pop();
fo << x << " ";
}
else
{
y =G[x].back();
G[x].pop_back();
st.push(y);
for (auto it=G[y].begin(); it!=G[y].end(); it++)
if (*it==x) {G[y].erase(it);break;}
}
}
}
int main()
{
ReadGraph();
if(Verif_Eulerian()==0)
{
fo<<"-1";
return 0;
}
else Euler();
return 0;
}