Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct wyciag{
- int xp;
- int yp;
- int xk;
- int yk;
- int czas_podrozy;
- int jak_czesto;
- };
- struct pole{
- int x;
- int y;
- int wys;
- int koszt;
- int pozycja_w_kopcu;
- pole *sasiad1 = NULL; //lewy sąsiad
- pole *sasiad2 = NULL; //prawy sąsiad
- pole *sasiad3 = NULL; //dolny sąsiad
- pole *sasiad4 = NULL; //górny sąsiad
- };
- void zamien(pole **kopiec)
- {
- pole **wiadro;
- *wiadro = kopiec[0];
- kopiec[0] = kopiec[1];
- kopiec[1] = *wiadro;
- }
- void wypchnij()
- {
- }
- int main()
- {
- int x, y, startx = 0, starty = 0, celx, cely, wyciagi ;
- scanf("%d %d %d %d %d %d %d", &x, &y, &startx, &starty, &celx, &cely, &wyciagi);
- pole **tab = new pole*[x];
- pole **kopiec = new pole*[x*y];
- wyciag *wyciagarka = new wyciag[wyciagi];
- if (wyciagi > 0)
- {
- for (int i = 0; i < wyciagi; i++)
- {
- scanf("%d %d %d %d %d %d", &wyciagarka[i].xp, &wyciagarka[i].yp, &wyciagarka[i].xk, &wyciagarka[i].yk, &wyciagarka[i].czas_podrozy, &wyciagarka[i].jak_czesto);
- }
- }
- for (int i = 0; i < y; i++)
- tab[i] = new pole[y];
- for (int i = 0; i < x; i++)
- for (int j = 0; j < y; j++)
- {
- scanf("%d", &tab[i][j].wys);
- tab[i][j].pozycja_w_kopcu = (x*y);
- tab[i][j].x = i;
- tab[i][j].y = j;
- tab[i][j].koszt = 100000000;
- if (i != 0){ tab[i][j].sasiad1 = &tab[i - 1][j]; }
- if (i != x - 1){ tab[i][j].sasiad2 = &tab[i + 1][j]; }
- if (j != y -1){ tab[i][j].sasiad3 = &tab[i][j + 1]; }
- if (j != 0){ tab[i][j].sasiad4 = &tab[i][j - 1]; }
- }
- tab[startx][starty].koszt = 0;
- for (int i = 0; i < x; i++)
- {
- for ( int j = 0; j < y; j++)
- {
- kopiec[tab[i][j].pozycja_w_kopcu] = &tab[i][j];
- }
- }
- cout << tab[celx][cely].koszt;
- delete tab;
- delete kopiec;
- return 0;
- }
- /*
- Dziecko jest na pozycji 2i+1 i 2i+2
- Rodzic na (i-1)/2
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement