Pagini recente » Cod sursa (job #516392) | Cod sursa (job #2619852) | Cod sursa (job #1658993) | Cod sursa (job #1289001) | Cod sursa (job #373402)
Cod sursa(job #373402)
#include <stdio.h>
#include <stdlib.h>
#define max 100010
int i,j,n,m,k,stack[max],top;
int *a[max];
void erase(int v,int w)
{
int i,j;
for(i=1; i<=a[v][0]; i++)
if(a[v][i]==w)
{
for(j=i; j<a[v][0]; j++) a[v][j]=a[v][j+1];
a[v][0]--;
break;
}
for(i=1; i<=a[w][0]; i++)
if(a[w][i]==v)
{
for(j=i; j<a[w][0]; j++) a[w][j]=a[w][j+1];
a[w][0]--;
break;
}
}
void euler(int v)
{
int i,w;
stack[++top]=v;
while(top)
{
w=stack[top--]; printf("%d ",w);
for(i=1; i<=a[w][0]; i++)
{
erase(w,a[w][i]);
stack[++top]=a[w][i];
}
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1; i<=n; i++)
{
a[i]=(int *)realloc(a[i],sizeof(int));
a[i][0]=0;
}
for(; m>0; m--)
{
scanf("%d%d",&i,&j);
a[i][0]++;
a[i]=(int *)realloc(a[i],(a[i][0]+1)*sizeof(int));
a[i][a[i][0]]=j;
a[j][0]++;
a[j]=(int *)realloc(a[j],(a[j][0]+1)*sizeof(int));
a[j][a[j][0]]=i;
}
euler(1);
return 0;
}