Pagini recente » Cod sursa (job #1834245) | Cod sursa (job #1372366) | Cod sursa (job #190835) | Cod sursa (job #19973) | Cod sursa (job #1348918)
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
#define nmax 100005
using namespace std;
vector<int> g[nmax];
vector<int> sol;
int n,m,d;
stack<int> s;
void read()
{
int x,y;
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
g[x].push_back(y);
g[y].push_back(x);
}
}
void delete_nod(int x,int y)
{
for(int i=0;i<g[y].size();i++)
if(g[y][i]==x)
{g[y].erase(g[y].begin()+i);
return;}
}
void euler()
{
for(int i=1;i<=n;i++)
if(g[i].size()==0)
{printf("-1");
return;}
s.push(1);
while(!s.empty())
{
int aux=s.top();
if(!g[aux].empty())
{
int k=g[aux][0];
d++;
g[aux].erase(g[aux].begin());
delete_nod(aux,k);
s.push(k);
continue;
}
sol.push_back(aux);
s.pop();
}
if(d==m)
for(int i=sol.size()-1;i>=0;i--)
printf("%d ",sol[i]);
else printf("-1\n");
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
read();
euler();
return 0;
}