Pagini recente » Cod sursa (job #1706753) | Cod sursa (job #1565239) | Cod sursa (job #3313971) | Cod sursa (job #2009172) | Cod sursa (job #2207256)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,x,y,k,gr[100001],sir[500002];
int sfru[100001];
struct muchie{int b;muchie *n;}*a[100001],*p;
bool K;
void delet(int x,int y)
{
muchie *p=a[x];
if(p->b!=y)
{
for(;p->n->b!=y;p=p->n);
p->n=p->n->n;
p=p->n;
}
else
{
a[x]=p->n;
}
}
void euler(int x)
{
while(a[x]!=NULL){
int k=a[x]->b;
delet(k,x);
delet(x,k);
euler(k);
}
sir[k]=x;++k;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)a[i]=NULL;
while(f>>x>>y)
{
p=new muchie;
p->b=x;
p->n=a[y];
a[y]=p;
p=new muchie;
p->b=y;
p->n=a[x];
a[x]=p;
++gr[x];++gr[y];
}
for(int i=1;i<=n;++i)if(gr[i]%2==1){g<<-1;return 0;}
for(int i=1;1;++i)if(gr[i]!=0){k=1;sir[1]=i;euler(i);break;}
for(int i=1;i<=m;++i){g<<sir[i]<<' ';}
}