Pagini recente » Cod sursa (job #2361141) | Cod sursa (job #1915786) | Cod sursa (job #2364101) | Cod sursa (job #1701098) | Cod sursa (job #2054884)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100001;
const int M=500001;
vector<int>a[N];
bool viz[M];
int n,m,m1[M],m2[M],q[M],k=0;
void citire()
{
int i;
in>>n>>m;
for(i=1; i<=m; i++)
{
in>>m1[i]>>m2[i];
a[m1[i]].push_back(i);
a[m2[i]].push_back(i);
}
}
void dfs(int nod,int muchie)
{
int i,indice;
viz[muchie]=1;
for(i=0; i<a[nod].size(); i++)
{
indice=a[nod][i];
if(viz[indice]==0)
{
q[++k]=m1[indice];
q[++k]=m2[indice];
dfs(m2[indice],indice);
}
}
}
int main()
{
int ok=1,i;
citire();
for(i=1; i<=n; i++)
if(ok==1)
{
if(a[i].size()%2==1)
ok=0;
}
if(ok==0)
out<<-1;
else
{
dfs(1,0);
for(i=1; i<=k; i++)
out<<q[i]<<" ";
}
return 0;
}