Pagini recente » Cod sursa (job #2917234) | Cod sursa (job #2990901) | Cod sursa (job #1265910) | Cod sursa (job #688804) | Cod sursa (job #3280407)
#include <fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct ura{
int nod, muchie;
}aux;
vector <ura> lista[100001];
queue <int> coada;
int sel[500001],grad[100001];
void ciclueulerian(int nod)
{
while(!lista[nod].empty())
{
ura aux=lista[nod].back();
lista[nod].pop_back();
int curent=aux.nod;
if(sel[aux.muchie]==0)
{
sel[aux.muchie]=1;
ciclueulerian(aux.nod);
}
}
coada.push(nod);
}
int main()
{
int n,m,n1,n2;
cin>>n>>m;
int ok=1;
for(int i=1;i<=m;i++)
{
cin>>n1>>n2;
grad[n1]++;
grad[n2]++;
aux.nod=n2;
aux.muchie=i;
lista[n1].push_back(aux);
aux.nod=n1;
lista[n2].push_back(aux);
}
ok=1;
for(int i=1;i<=n;i++)
if(grad[i]%2==1)
ok=0;
if(ok==0)
cout<<"-1";
else
{
ciclueulerian(1);
while(!coada.empty())
{
cout<<coada.front()<<" ";
coada.pop();
}
}
return 0;
}