Pagini recente » Cod sursa (job #1135249) | Cod sursa (job #1355543) | Cod sursa (job #1845401) | Cod sursa (job #2622087) | Cod sursa (job #2973271)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f ("ciclueuler.in");
ofstream g ("ciclueuler.out");
vector < pair < int , int > > v[100005];
vector <int> sol;
stack <int>s;
int i , n , m , nod , x , y , viz[100005];
int main()
{
f >> n >> m;
for (int i = 1 ; i <= m ; i++)
{
f >> x >> y;
v[x].push_back (make_pair (y , i));
v[y].push_back (make_pair (x , i));
}
for (int i = 1 ; i <= n ; i++)
if (v[i].size () % 2 == 1)
{
g << -1 ;
return 0;
}
s.push (1);
while (!s.empty ())
{
int nod = s.top ();
if (v[nod].size () > 0)
{
int u = v[nod].back().first;
int ind = v[nod].back().second;
v[nod].pop_back ();
if (!viz[ind])
{
viz[ind] = 1;
s.push (u);
}
}
else
{
sol.push_back (nod);
s.pop ();
}
}
sol.pop_back ();
for (auto vecin : sol)
g << vecin << " ";
return 0;
}