Pagini recente » Cod sursa (job #2356090) | Cod sursa (job #3242071) | Cod sursa (job #2370067) | Cod sursa (job #359424) | Cod sursa (job #2218161)
#include <stdio.h>
#include <stdlib.h>
int n, m, a[10000][10000], grad[10000], i;
void euler(int nod)
{
int i, w;
while (grad[nod] > 0)
{
for (i = 1; i <= n; ++i)
{
if(a[nod][i] == 1)
{
w = i;
a[nod][i] = 0;
a[i][nod] = 0;
--grad[nod];
--grad[i];
break;
}
}
euler (w);
}
printf ("%d ", nod);
}
int main()
{
FILE *f, *g;
f = fopen ("ciclueuler.in", "r");
g = fopen ("ciclueuler.out", "w");
fscanf (f, "%d %d", &n, &m);
for (i = 1; i <= m; ++i)
{
int x, y;
fscanf (f, "%d %d", &x, &y);
a[x][y] = 1;
a[y][x] = 1;
++grad[x];
++grad[y];
}
for (i = 1; i <= n; ++i)
if (grad[i] & 1)
{
printf ("-1");
return 0;
}
euler (1);
printf ("\b");
printf (" ");
fclose (f);
fclose (g);
return 0;
}