Pagini recente » Cod sursa (job #784703) | Cod sursa (job #714445) | Cod sursa (job #592648) | Cod sursa (job #860749) | Cod sursa (job #2201358)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100010
#define MMAX 500010
using namespace std;
int n,m,x,y,sz;
int ans[MMAX];
bool ms[MMAX];
vector<pair<int,int>> nd[NMAX];
void euler(int nod){
for(int ma=0;ma<nd[nod].size();ma++){
if(ms[nd[nod][ma].second])continue;
ms[nd[nod][ma].second]=true;
euler(nd[nod][ma].first);
}
ans[++sz]=nod;
}
int main()
{
ifstream f ("ciclueuler.in");
ofstream g ("ciclueuler.out");
f>>n>>m;
for(int i=1;i<=m;i++)
f>>x>>y,
nd[x].push_back(make_pair(y,i)),
nd[y].push_back(make_pair(x,i));
for(int i=1;i<=n;i++)
if(nd[i].size()%2){
g<<"-1\n";
return 0;
}
for(int i=1;i<=n;i++)
if(nd[i].size()){
euler(i);
break;
}
for(int i=1;i<sz;i++) g<<ans[i]<<" ";
f.close ();
g.close ();
return 0;
}