#include #define MAX_N 1000 #define ABS(a) (((a) < 0) ? -(a) : (a)) int sousedi[MAX_N+1][MAX_N+1]; //mělo by se dynamicky alokovat; každý to zvládne int sousedi_len[MAX_N+1]; int barvy[MAX_N+1]; //barva vrcholů int nvrcholu[2], nstanic; // počet vrcholů dané barvy a stanic celkem int obarvi(int v, int barva) { barvy[v] = barva; // $>$0 -- se stanicí, $<$0 -- bez stanice nvrcholu[ (barva > 0) ? 0 : 1 ]++; for (int i=0; i nvrcholu[1]) obarvi(i, -2); // lze umístnit méně stanic, přebarvíme } if (i > n) { // povedlo se obarvit všechny vrcholy printf("Stačí postavit %d stanic.\n",nstanic); for (i=1; i<=n; i++) if (barvy[i] > 0) printf("%d\n",i); } else printf("Stanice postavit nelze!\n"); return 0; }