#include #include #define MAXN 100 #define MAXM (6*MAXN) int N; /* Počet vrcholů */ int first[MAXN]; /* První hrana z~vrcholu */ int dest[MAXM], next[MAXM]; /* Pro hranu: kam vede a další hrana */ int deg[MAXN]; /* Stupně vrcholů */ int queue[MAXN]; /* Fronta vrcholů nízkého stupně */ int color[MAXN]; /* Přiřazené barvy */ void melolontha(void) { /* Schroustá vstup */ int i, j, M=1; scanf("%d", &N); while (scanf("%d%d", &i, &j) == 2) { /* Zařadíme novou hranu */ deg[i]++, deg[j]++; dest[M]=j; next[M]=first[i]; first[i]=M; M++; dest[M]=i; next[M]=first[j]; first[j]=M; M++; } } void scan(void) { /* Projde graf podle stupňů */ int r=0, w=0; /* Čtecí a zápisový index fronty */ int i, j; for (i=0; i=0; --r) { /* Projdeme frontu pozpátku */ i = queue[r]; for (j=1; j<=6; j++) /* Zatím jsou všechny barvy volné */ avail[j] = 1; for (j=first[i]; j; j=next[j]) /* Mimo barev použitých sousedy */ avail[color[dest[j]]] = 0; j = 1; /* Zvolíme první nepoužitou */ while (!avail[j]) j++; color[i] = j; } for (i=0; i