Pagini recente » Cod sursa (job #244265) | Cod sursa (job #1902398) | Cod sursa (job #335146) | Cod sursa (job #462011) | Cod sursa (job #1559152)
#include<cstdio>
#include<vector>
#include<stack>
#include<algorithm>
const int NMAX=100007;
int H[NMAX];
std::vector<int> V[NMAX],rasp;
std::stack<int> stiva;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
V[x].push_back(y);
V[y].push_back(x);
H[x]++;
H[y]++;
}
for(int i=1;i<=n;i++)
if(H[i]%2==1)
{
printf("-1");
return 0;
}
stiva.push(1);
while(!stiva.empty())
{
int q=stiva.top();
if(V[q].size()==0)
{
rasp.push_back(q);
stiva.pop();
continue;
}
int sq=V[q][V[q].size()-1];
stiva.push(sq);
V[q].pop_back();
V[sq].erase(find(V[sq].begin(),V[sq].end(),q));
}
for(int i=0;i<rasp.size();i++)
printf("%d ",rasp[i]);
return 0;
}