Pagini recente » Cod sursa (job #1942931) | Cod sursa (job #1691796) | Cod sursa (job #647587) | Cod sursa (job #442967) | Cod sursa (job #2196247)
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
FILE *fin, *fout;
int n, m, k, i, l, x, y, steag, nod, fiu, lg;
vector <int> v[100001];
int st[500001], sol[500001];
fin = fopen("ciclueuler.in", "r");
fout = fopen("ciclueuler.out", "w");
fscanf(fin,"%d%d", &n, &m);
for(i=1;i<=m;i++){
fscanf(fin,"%d%d", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
lg=v[x].size();
lg=v[y].size();
}
steag=0;
for(i=1;i<=n;i++){
lg=v[i].size();
if(v[i].size()%2==1)
steag=1;
}
if(steag==0){
k=1;
st[1]=1;
l=0;
while(k>0){
nod=st[k];
if(v[nod].size()!=0){
fiu=v[nod].back();
st[++k]=fiu;
v[nod].pop_back();
v[fiu].erase(find(v[fiu].begin(), v[fiu].end(), nod));
}
else{
sol[++l]=st[k--];
}
}
for(i=1;i<=l-1;i++){
fprintf(fout,"%d ", sol[i]);
}
}
else{
fprintf(fout,"-1");
}
fclose(fin);
fclose(fout);
return 0;
}