Pagini recente » Cod sursa (job #1776821) | Cod sursa (job #1730331) | Cod sursa (job #2956992) | Cod sursa (job #535618) | Cod sursa (job #1649883)
#include<fstream>
#include<deque>
#include<algorithm>
#include<queue>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int Nmax = 100001;
vector <int> lista[Nmax];
int n, m=0;
int grad[Nmax]={0};
void citire()
{
int x,y;
in>>n>>m;
while(in >> x >>y)
{
lista[x].push_back(y);
lista[y].push_back(x);
grad[x]++; grad[y]++;
}
}
int verif()
{
for(int i=1; i<=n; i++)
if(grad[i]%2==1)
return 0;
return 1;
}
void sterge(int nod, int baza)
{
lista[baza].erase(lista[baza].begin());
for(int i=0; i<lista[nod].size(); i++)
if(lista[nod][i] == baza)
{
lista[nod].erase(lista[nod].begin()+i);
break;
}
}
void DFS(int baza)
{
while(lista[baza].size())
{
int nod = lista[baza][0];
sterge(lista[baza][0], baza);
DFS(nod);
out<<baza<<' ';
}
}
int main ()
{
citire();
if(verif())
DFS(1);
else
out<<"-1\n";
return 0;
}