Pagini recente » Cod sursa (job #1979423) | Cod sursa (job #1265088) | Cod sursa (job #1599855) | Cod sursa (job #2070454) | Cod sursa (job #1249955)
#include <vector>
#include <set>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <cstring>
#include <string>
#include <cstdio>
#include <climits>
#include <list>
#define PII pair < int , int >
#define MP make_pair
#define PB push_back
#define F first
#define S second
#define LL long long
#define NMAX 20
using namespace std;
vector <int> G[100001];
list <int> Q;
int m, n, i, x, y;
void euler (int x)
{
vector <int> :: iterator it;
Q.push_front(x);
while (!Q.empty())
{
x=Q.front();
if (G[x].empty())
{
Q.pop_front();
if (!Q.empty()) printf("%d ",x);
}
else
{
int y=G[x].back();
Q.push_front(y);
G[x].pop_back();
for (it=G[y].begin(); it!=G[y].end(); it++)
{
if (*it==x)
{
G[y].erase(it);
break;
}
}
}
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=m; i++)
{
scanf("%d%d",&x,&y);
G[x].PB(y);
G[y].PB(x);
}
for (i=1; i<=n; i++)
{
if (G[i].size()%2!=0)
{
printf("-1");
return 0;
}
}
euler(1);
return 0;
}