Pagini recente » Cod sursa (job #1373770) | Cod sursa (job #889240) | Cod sursa (job #1453299) | Cod sursa (job #130508) | Cod sursa (job #2143644)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
#define lim 100010
int n,m,dr,newn;
list <int> G[lim];
int st[5*lim];
bool viz[lim];
void euler (int nod)
{
while (!G[nod].empty())
{
newn = G[nod].front();
G[nod].pop_front();
G[newn].erase (find (G[newn].begin(), G[newn].end(), nod));
euler (newn);
}
st[++dr]=nod;
}
int main()
{
int a,b;
fin>>n>>m;
for (int i=1; i<=m; i++)
{
fin>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
for (int i=1; i<=n; i++)
if (G[i].size()==0 || G[i].size()%2)
{
fout<<-1;
return 0;
}
euler (1);
for (int i=1; i<=m; i++) fout<<st[i]<<' ';
fout.close();
return 0;
}