Pagini recente » Cod sursa (job #1964021) | Cod sursa (job #2547050) | Cod sursa (job #2355774) | Cod sursa (job #2848939) | Cod sursa (job #2571272)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int MAX=100006;
int n,m,f[5*MAX],s[5*MAX],ans[5*MAX],nr;
vector<int>ind[MAX];
bool sel[MAX];
void euler(int x)
{
while(!ind[x].empty())
{
int k=ind[x].back();
ind[x].pop_back();
if(sel[k]==0)
{
sel[k]=1;
euler(f[k]+s[k]-x);
}
}
ans[++nr]=x;
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>f[i]>>s[i];
ind[f[i]].push_back(i);
ind[s[i]].push_back(i);
}
for(int i=1;i<=n;i++)
{
if((ind[i].size())%2==1)
{
out<<"-1";
exit(0);
}
}
euler(1);
for(int i=1;i<nr;i++) out<<ans[i]<<" ";
return 0;
}