Pagini recente » Cod sursa (job #2151501) | Cod sursa (job #877773) | Cod sursa (job #2459154) | Cod sursa (job #1018036) | Cod sursa (job #2696723)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int a[500001], b[500001], sol[500001], nr;
bool viz[500001];
vector <int> v[100001];
void euler(int x) {
int current, urm;
while(v[x].size()!=0) {
current=v[x].back();
v[x].pop_back();
if(viz[current]==0) {
viz[current]=1;
if(a[current]==x)
urm=b[current];
else
urm=a[current];
euler(urm);
}
}
sol[++nr]=x;
}
int main() {
int st, i, n, m;
FILE *fin, *fout;
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",&a[i],&b[i]);
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
st=0;
for(i=1;i<=n;i++)
if((v[i].size()%2)==1)
st=1;
if(st==1)
fprintf(fout, "-1");
else {
euler(1);
for(;nr>1;nr--)
fprintf(fout, "%d ",sol[nr]);
}
fclose( fin );
fclose( fout );
return 0;
}