Pagini recente » Cod sursa (job #758249) | Cod sursa (job #261712) | Cod sursa (job #1581685) | Cod sursa (job #1824698) | Cod sursa (job #1290440)
#include <iostream>
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,aux;
vector < vector < int > > v;
vector < int > grad;
vector < int >::iterator it;
void citire()
{
int m,x,y;
in>>n>>m;
v.resize(n+1);
grad.resize(n+1);
for(int i=1;i<=m;i++)
{
in>>x>>y;
v[x].pb(y);
v[y].pb(x);
grad[x]++;
grad[y]++;
}
}
bool eGrafEulerian()
{
for(int i=1;i<=n;i++)
if(grad[i]%2)
return false;
return true;
}
void cicluEulerian(int x)
{
while(v[x].size())
{
aux=v[x].back();
v[x].pop_back();
for(it=v[aux].begin();it!=v[aux].end();it++)
if(*it==x)
{
*it=v[aux].back();
v[aux].pop_back();
break;
}
cicluEulerian(aux);
}
out<<x<<' ';
}
int main()
{
citire();
if(eGrafEulerian())
cicluEulerian(1);
else
out<<"-1";
return 0;
}