Pagini recente » Cod sursa (job #1571568) | Cod sursa (job #2027680) | Cod sursa (job #808533) | Cod sursa (job #1090091) | Cod sursa (job #2696714)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
vector <int> v[100010];
vector <int> rez;
int a[500010],b[500010],viz[500010];
int euler(int nod)
{
int muchie,vecin;
while (v[nod].size()!=0)
{
muchie=v[nod].back();
v[nod].pop_back();
if (viz[muchie]==0)
{
viz[muchie]=1;
if (a[muchie]==nod)
vecin=b[muchie];
else
vecin=a[muchie];
euler(vecin);
}
}
rez.push_back(nod);
}
int main()
{
int n,m,i,ok;
cin>>n>>m;
for (i=1; i<=m; i++)
{
cin>>a[i]>>b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
ok=1;
for (i=1; i<=n && ok==1; i++)
if (v[i].size()%2==1)
{
cout<<-1;
ok=0;
}
if (ok==1)
{
euler(1);
for (i=0; i<rez.size()-1; i++)
cout<<rez[i]<<" ";
}
return 0;
}