Pagini recente » Cod sursa (job #3258336) | Cod sursa (job #1221725) | Cod sursa (job #3140984) | Cod sursa (job #653735) | Cod sursa (job #269060)
Cod sursa(job #269060)
#include<stdio.h>
#include<malloc.h>
const int maxn = 140000;
const int maxmu = 500100;
struct nod
{
int vec;
int poz;
nod* next;
};
nod* M[maxn];
int N,MU;
int VER[maxmu],st[maxmu],k=0;
int GR[maxn];
void introduce(int vecin,int pozitie,int cur)
{
nod* nou = new nod;
nou -> vec = vecin;
nou -> poz = pozitie;
nou ->next = M[cur];
M[cur] = nou;
}
void dfs(int x)
{
/*st[++k]=x;
while (k)
{
if (M[st[k]]!=NULL)
if (VER[M[st[k]]->poz]) M[st[k]] = M[st[k]]->next;
else {
VER[M[st[k]]->poz] = 1;
st[++k] = M[st[k]]->vec;
}
else printf("%d ",st[k--]);
}
*/
for(nod* cur = M[x];cur != NULL; cur = cur -> next)
{
if (VER[cur -> poz]) continue;
VER[cur -> poz] = 1;
dfs(cur -> vec);
printf("%d ",x);
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d\n",&N,&MU);
int i;
for(i = 1;i <= MU; ++i)
{
int x = 0,y = 0;
scanf("%d %d\n",&x,&y);
introduce(y,i,x);
introduce(x,i,y);
GR[x]++;GR[y]++;
}
for(i = 1;i <= N; ++i)
if (GR[i] % 2 == 1) {printf("-1\n");return 0;}
dfs(1);
return 0;
}