Pagini recente » Cod sursa (job #648260) | Cod sursa (job #246532) | Cod sursa (job #617672) | Cod sursa (job #261990) | Cod sursa (job #1378293)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
#define foor(it,v) for(__typeof(v.begin()) it=v.begin();it!=v.end();++it)
#define cout g
int n,m,i;
struct eee
{
int a,b;
};
vector<eee> muc;
vector<vector<int> >G;
vector<bool> on;
vector<int> grad;
void euler(int nod)
{
foor(it,G[nod]) if(on[*it])
{
on[*it]=false;
euler(muc[*it].a==nod ? muc[*it].b:muc[*it].a);
}
cout<<nod<<' ';
}
int main()
{
f>>n>>m;
muc.resize(m+1);
G.resize(n+1);
on.resize(m+1,true);
grad.resize(n+1);
for(i=1; i<=m; ++i)
{
f>>muc[i].a>>muc[i].b;
++grad[muc[i].a];
++grad[muc[i].b];
G[muc[i].a].push_back(i);
G[muc[i].b].push_back(i);
}
for(i=1; i<=n; ++i) if(grad[i]&1)
{
cout<<"-1";
return 0;
}
euler(1);
return 0;
}