Pagini recente » Cod sursa (job #2927887) | Cod sursa (job #2336319) | Cod sursa (job #1024331) | Cod sursa (job #2523702) | Cod sursa (job #1250255)
#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];
int v[100010];
bool ok=true;
int m,n,i,x,y;
void euler (int x)
{
int w;
{
for(vector <int> :: iterator it=G[x].begin(); it!=G[x].end() && !G[x].empty(); ++it)
{
w=(*it);
G[x].erase(it);
for(vector <int> :: iterator it2=G[w].begin(); it2<=G[w].end() && !G[w].empty(); ++it2)
{
if((*it2)==x)
{
G[w].erase(it2);
break;
}
}
euler(w);
}
if(G[x].empty() )
{
v[++v[0]]=x;
}
}
}
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\n");
return 0;
}
}
euler(1);
/* while(!Q.empty())
{
printf("%d ",Q.back());
Q.pop_back();
}*/
for(i=1;i<v[0];i++)
{
printf("%d ",v[i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}