Pagini recente » Cod sursa (job #2277461) | Cod sursa (job #724129) | Cod sursa (job #947524) | Cod sursa (job #762885) | Cod sursa (job #387069)
Cod sursa(job #387069)
#include <cstdio>
#include <vector>
using namespace std;
vector <pair<int,int> > g[100001];
int deg[100001],viz[100001];
int stack[500001],top;
int n,m;
void parc(int x)
{
stack[++top]=x;
int val;
while(top)
{
val=stack[top];
if(!g[val].empty())
if(!viz[g[val].back().second])
{
viz[g[val].back().second]=1;
stack[++top]=g[val].back().first;
g[val].pop_back();
}
else
g[val].pop_back();
else
{
printf("%d ",stack[top]);
top--;
}
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
g[x].push_back(make_pair(y,i));
g[y].push_back(make_pair(x,i));
deg[x]++;
deg[y]++;
}
int ok;
for(int i=1;i<=m;i++)
if(deg[i]%2)
ok=0;
if(ok==0)
printf("-1");
else
parc(1);
fclose(stdout);
return 0;
}