Pagini recente » Cod sursa (job #2821536) | dedicatie_speciala3 | Cod sursa (job #2772625) | Cod sursa (job #82624) | Cod sursa (job #2557229)
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int> v[500001];
int st[500001];
int raspuns[500001];
int main()
{
int i,n,m,x,y,k=0,ok=0,varf,r=0,next,j,a=0;
in>>n>>m;
for(i=1;i<=m;i++){
in>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(i=1;i<=n;i++){
if(v[i].size()%2==1){
a=1;
}
}
if (a==0) {
st[0]=1;
i=1;
while (i>0) {
a=st[i-1];
if (v[a].size()==0) {
raspuns[k]=st[i-1];
i--;
k++;
}
else {
next=v[a][v[a].size()-1];
v[a].erase(v[a].end()-1);
ok=0;
for (int l=0;l<v[next].size()&&ok==0;l++) {
if (v[next][l]==a) {
v[next].erase(v[next].begin()+l);
ok=1;
}
}
st[i]=next;
i++;
}
}
for(i=0;i<k-1;i++){
out<<raspuns[i]<<" ";
}
}
else out<<-1;
return 0;
}