Pagini recente » Cod sursa (job #2050288) | Cod sursa (job #1777685) | Cod sursa (job #207451) | Cod sursa (job #1928360) | Cod sursa (job #1638205)
#include<fstream>
#include<vector>
#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;
int grad[Nmax]={0};
void citire()
{
in>>n>>m;
for(int i=1; i<=m; i++)
{
int x,y;
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;
}