#include #define POS2INT(x,y,z) ( ((x)<<12) | ((y)<<6) | (z) ) #define N (POS2INT(64,63,63)) #define BUG printf("%d",1/0); int rank[N]; int parent[N]; int nComp; void reset() { int i; for(i=0;irank[b]) { parent[b] = a; } else if(rank[b] >rank[a]) { parent[a] = b; } else { parent[a] = b; rank[b] ++; } } int r,s,v; int cost; char XXXS[100]; char * readStr() { int c; char * q = XXXS; while((c=getchar())>=' ') *(q++) = (char) c; *q = 0; /*printf("READSTR: %s\n",XXXS);*/ return XXXS; } void readConns() { int k,i,j; int a,b; for(k=0 ; k1000*1000) sprintf(xxxF,"%d,%d,%d",i/(1000*1000), (i%(1000*1000)) / 1000, i%1000); else if(i>1000) sprintf(xxxF,"%d,%d",i/1000,i%1000); else sprintf(xxxF,"%d",i); return xxxF; } int main() { char *p; while(1) { p = readStr(); sscanf(p,"%d%d%d",&v,&r,&s); if(!v) break; reset(); nComp = v*r*s; cost = 0; readConns(); if(nComp==1) printf("Budova je jiz dostatecne propojena.\n"); else { tryHoriz(); if(nComp>1) tryVert(); printf("Ocekavana cena: %s,000 Kc\n",format(cost)); } } return 0; }