Pagini recente » Cod sursa (job #1045237) | Cod sursa (job #1386024) | Cod sursa (job #732993) | Cod sursa (job #2731620) | Cod sursa (job #2555646)
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
vector <int> v[500002];
int st[500002], sol[500002];
int main()
{
int n, next, i, l, k=0, a, b, m;
FILE *fin, *fout;
fin=fopen("ciclueuler.in" ,"r");
fout=fopen("ciclueuler.out" ,"w");
fscanf(fin, "%d%d" ,&n ,&m);
for (i=0;i<m;i++) {
fscanf(fin, "%d%d" ,&a ,&b);
v[a].push_back(b);
v[b].push_back(a);
}
a=0;
for (i=1;i<=n;i++) {
if (v[a].size()%2!=0) {
a=1;
}
}
if (a==0) {
st[0]=1;
i=1;
while (i>0) {
a=st[i-1];
//fprintf(fout, "%d :size %d \n" ,a ,v[a].size());
if (v[a].size()==0) {
sol[k]=st[i-1];
i--;
k++;
}
else {
next=v[a][v[a].size()-1];
//fprintf(fout, "%d \n" ,next);
v[a].erase(v[a].end()-1);
for (l=0;l<v[next].size();l++) {
if (v[next][l]==a) {
v[next].erase(v[next].begin()+l);
break;
}
}
st[i]=next;
i++;
}
}
for (i=0;i<k-1;i++) {
fprintf(fout, "%d " ,sol[i]);
}
}
else {
fprintf(fout, "-1");
}
return 0;
}