Pagini recente » Cod sursa (job #1840421) | Cod sursa (job #3290129) | Cod sursa (job #1954178) | Cod sursa (job #2776863) | Cod sursa (job #270146)
Cod sursa(job #270146)
#include<stdio.h>
#define nmax 100010
#define mmax 500010
long s[mmax], vz[nmax], n, m;
struct elem
{ long vf;
elem *urm;
} *a[nmax], *q;
FILE *f, *g;
int read()
{ long gr[nmax], i, x, y;
fscanf(f, "%ld%ld", &n, &m);
for(i=1; i<=n; i++)
gr[i]=0;
for(i=1; i<=m; i++)
{ fscanf(f, "%ld%ld", &x, &y);
gr[x]++; gr[y]++;
q=new elem;
q->vf=y; q->urm=a[x];
a[x]=q;
q=new elem;
q->vf=x; q->urm=a[y];
a[y]=q;
}
for(i=1; i<=n; i++)
if(gr[i]%2==1)
return 0;
return 1;
}
void df1(long z, long k)
{ elem *q;
s[k]=z;
vz[z]=1;
for(q=a[z]; q; q=q->urm)
if(!vz[q->vf])
df1(q->vf, k+1);
}
int check()
{ long i;
df1(1, 1);
for(i=1; i<=n; i++)
if(vz[i]==0)
return 0;
return 1;
}
void solve()
{
}
int main()
{
f=fopen("ciclueuler.in", "r");
g=fopen("ciclueuler.out", "w");
if(read())
if(check())
solve();
else
fprintf(g, "-1\n");
else
fprintf(g, "-1\n");
return 0;
}