Pagini recente » Cod sursa (job #2573184) | Cod sursa (job #1896151) | Cod sursa (job #1811346) | Cod sursa (job #538738) | Cod sursa (job #1017180)
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
FILE *f=fopen("ciclueuler.in","r");
FILE *g=fopen("ciclueuler.out","w");
vector<int> v[100001],sol;
int n,m,i,a,b,s[100001];
void df(int x);
bool verif();
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
if(verif())
{
df(1);
for(i=0;i<sol.size()-1;i++)
fprintf(g,"%d ",sol[i]);
} else fprintf(g,"%d",-1);
fclose(g);
return 0;
}
bool verif()
{
for(i=1;i<=n;i++)
if(v[i].size()%2!=0)return 0;
return 1;
}
void df(int x)
{
int y;
s[++s[0]]=x;
while(s[0])
{
x=s[s[0]];
if(v[x].size())
{
y=v[x].back();
v[x].pop_back();
s[++s[0]]=y;
v[y].erase(find(v[y].begin(), v[y].end(), x));
}
else
{
s[0]--;
sol.push_back(x);
}
}
}