#include #include #define SPOL 100 #define MEST 100 int cp[MEST][MEST][SPOL]; /* Cena za cestu z 1 do 2 společností 3 */ int cm[MEST][SPOL][SPOL]; /* Cena za překlad ve městě 1 od společnosti 2 ke společnosti 3 */ int cena[MEST][SPOL][2]; /* Jaká je cena za přesun do této části letiště? */ int konecne[MEST][SPOL][2]; /* Je výše uvedená cena konečná? */ int odkud_m[MEST][SPOL][2]; /* Jaký je předchozí uzel na cestě? */ int odkud_s[MEST][SPOL][2]; int odkud_b[MEST][SPOL][2]; int ns, nm; #define INF 60000 /* Nekonečno */ // Najdi prvek s~nejmenší dočasnou hodnotou (zde by se měla používat Fibonacciho halda). int findmin( int *m, int *s, int *b ) { int i,j,k; int mcena = INF; for (i=0; i c) { cena[m][s][b] = c; odkud_m[m][s][b] = om; odkud_s[m][s][b] = os; odkud_b[m][s][b] = ob; } } // Získej od uživatele nějaká vstupní data. void input( void ) { int i,j,k; printf( "Zadej pocet spolecnosti, pocet mest:\n" ); scanf( "%d%d", &ns, &nm ); for (i=0; i