Pagini recente » Cod sursa (job #3180814) | Cod sursa (job #1716549) | Cod sursa (job #1853156) | Cod sursa (job #1163196) | Cod sursa (job #448397)
Cod sursa(job #448397)
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define file_in "ciclueuler.in"
#define file_out "ciclueuler.out"
#define nmax 101000
int n,m,nr,v[nmax],x[nmax],y[nmax],grad[nmax],viz[nmax];
vector<int> G[nmax];
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
for (int i=1;i<=m;++i)
{
scanf("%d %d", &x[i], &y[i]);
grad[x[i]]++;
grad[y[i]]++;
G[x[i]].push_back(i);
G[y[i]].push_back(i);
}
}
inline void dfs(int nod)
{
vector<int> :: iterator it;
for (it=G[nod].begin();it!=G[nod].end();it++)
if (!viz[*it])
{
viz[*it]=1;
dfs(x[*it]+y[*it]-nod);
}
v[++nr]=nod;
}
void solve()
{
nr=0;
for (int i=1;i<=n;++i)
if (grad[i]&1)
{
printf("-1\n");
exit(0);
}
dfs(1);
for (int i=1;i<=nr;++i) printf("%d ", v[i]);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}