Pagini recente » Cod sursa (job #1899820) | Cod sursa (job #3219195) | Cod sursa (job #3206181) | Cod sursa (job #240302) | Cod sursa (job #900705)
Cod sursa(job #900705)
#include<stdio.h>
#include <list>
using namespace std;
int n,m,k,nr[100005],i,x,stiva[1000005];
list<int> v[100002];
void citire()
{
int i,a,b;
scanf("%d %d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d %d",&a,&b);
nr[a]++;
nr[b]++;
v[a].push_back(b);
v[b].push_back(a);
}
}
void euler(int x)
{
int y;
list<int>::iterator it;
while(v[x].empty()==0)
{
y=v[x].front();
k++;
stiva[k]=x;
v[x].pop_front();
for(it=v[y].begin();it!=v[y].end();++it)
{
if(*it==x)
{
v[y].erase(it);
break;
}
}
x=y;
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
citire();
x=1;
k++;
stiva[k]=1;
for(i=1;i<=n;++i)
{
if(nr[i]%2==1)
{
printf("-1");
fclose(stdout);
return 0;
}
}
int t=0;
while(k>0)
{
euler(x);
x=stiva[k];
k--;
t++;
nr[t]=x;
}
t--;
for(i=t;i>=1;--i)
printf("%d ",nr[i]);
fclose(stdout);
return 0;
}