Pagini recente » Cod sursa (job #535014) | Cod sursa (job #2838500) | Cod sursa (job #2417057) | Cod sursa (job #2482088) | Cod sursa (job #2554708)
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
struct vecini{
int nod;
int muchie;
};
int vect[500001];
vector <vecini> v[100001];
int st[500001];
int raspuns[500001];
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;
}