Pagini recente » Cod sursa (job #2577888) | Cod sursa (job #2838004) | Cod sursa (job #2772865) | Cod sursa (job #2819348) | Cod sursa (job #2554702)
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
struct vecini{
int nod;
int muchie;
};
int vect[100005];
vector <vecini> v[100005];
int st[500005];
int raspuns[500005];
int main()
{
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int i,N,M,x,y,k,nr_elem=0,ok,varf;
vecini a;
in>>N>>M;
for(i=1;i<=M;i++){
in>>x>>y;
a.nod=y;
a.muchie=i;
v[x].push_back(a);
a.nod=x;
v[y].push_back(a);
}
for(i=1;i<=N;i++){
if(v[i].size()%2==1){
out<<"-1";
return 0;
}
}
k=1;
st[k]=1;
while(k>0){
varf=st[k];
ok=0;
for(vector <vecini>:: iterator it=v[varf].begin();it!=v[varf].end() && ok==0;it++){
a=*it;
if(vect[a.muchie]==0){
vect[a.muchie]=1;
k++;
st[k]=a.nod;
ok=1;
}
}
if(ok==0){
nr_elem++;
raspuns[nr_elem]=st[k];
k--;
}
}
if(nr_elem>M+1){
out<<"-1";
return 0;
}
for(i=2;i<=nr_elem;i++){
out<<raspuns[i]<<" ";
}
return 0;
}