Pagini recente » Cod sursa (job #703313) | Cod sursa (job #2074686) | Cod sursa (job #2707632) | Cod sursa (job #1686025) | Cod sursa (job #1799004)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,k;
vector<int>v[100001];
vector<int>::iterator it;
int stiva[500001],vc[100001];
void citire(){
int i,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
vc[x]++;
vc[y]++;
}
}
void euler ( int nod ){
int fiu;
while(v[nod].size()!=0){
fiu=v[nod].back();
k++;
stiva[k]=fiu;
v[nod].pop_back();
it=find(v[fiu].begin(),v[fiu].end(),nod);
v[fiu].erase(it);
nod=fiu;
}
}
int main(){
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
citire();
int pp=1,i;
for(i=1;i<=n&&pp==1;i++)
if(vc[i]%2==1)
pp=0;
if(pp==0)
printf("-1\n");
else{
stiva[1]=1;
k=1;
printf("%d ",stiva[k]);
while(k!=0){
euler(stiva[k]);
k--;
if(k>1)
printf("%d ",stiva[k]);
}
}
return 0;
}