Pagini recente » Cod sursa (job #1076242) | Cod sursa (job #2871158) | Cod sursa (job #619760) | Cod sursa (job #1361502) | Cod sursa (job #2374250)
#include <bits/stdc++.h>
#define nmax 100001
#define mmax 500001
using namespace std;
vector <int> v[nmax];
bool used[mmax];
int A[mmax], B[mmax];
vector <int> sol;
vector <int> q;
int main(){
FILE *fin, *fout;
int n,m,i,j,x;
fin=fopen("ciclueuler.in","r");
fout=fopen("ciclueuler.out","w");
fscanf(fin,"%d%d",&n,&m);
for(x=0;x<m;x++){
fscanf(fin,"%d%d",&i,&j);
v[i].push_back(x);
v[j].push_back(x);
A[x]=i;
B[x]=j;
}
for(i=1;i<=n;i++){
if(v[i].size()%2==1){
fprintf(fout,"-1");
return 0;
}
}
q.push_back(1);
while(!q.empty()){
int nod = q.back();
if(!v[nod].empty()){
int dest=v[nod].back();
v[nod].pop_back();
if(!used[dest]){
used[dest]=1;
int loc = A[dest];
if(loc == nod)
loc = B[dest];
q.push_back(loc);
}
}else{
q.pop_back();
sol.push_back(nod);
}
}
for(i=0;i<sol.size()-1;i++){
fprintf(fout,"%d ",sol[i]);
}
fclose(fin);
fclose(fout);
return 0;
}