Pagini recente » Cod sursa (job #498200) | Cod sursa (job #3186820) | Cod sursa (job #1702373) | Cod sursa (job #3152588) | Cod sursa (job #1814023)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#define cout cerr
#define MAX 100005
using namespace std;
int n,m,x,y;
vector <int> a[MAX];
stack <int> b;
void DFS(int k)
{
while(a[k].size())
{
int x=a[k].front();
a[k].erase(a[k].begin());
for(int j=0; j<a[x].size(); j++)
if(a[x][j]==k)
{
a[x].erase(a[x].begin()+j);
break;
}
DFS(x);
}
b.push(k);
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=0; i<m; i++)
{
scanf("%d %d",&x,&y);
a[x].push_back(y);
a[y].push_back(x);
}
bool TR=false;
for(int i=1; i<=n; i++)
{
if(a[i].size()%2==1)
TR=true;
//cout<<a[i].size()<<" ";
///for(int j=0;j<a[i].size();j++)
/// cout<<a[i][j]<<" ";
///cout<<endl;
}
if(TR)
printf("-1");
else
{
DFS(1);
while(b.size())
{
printf("%d ",b.top());
b.pop();
}
}
return 0;
}