Advertisement
Josif_tepe

Untitled

Apr 15th, 2022
789
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4.  
  5. int main() {
  6.     // prvo vnesuvame kolku redovi i koloni ke ima lavirintot, a posle gi pisuvame negovite elementi
  7.     int redovi, koloni;
  8.     cin >> redovi >> koloni;
  9.    
  10.     char lavirint[redovi][koloni];
  11.     int poseteno[redovi][koloni];
  12.     int pocetok_i, pocetok_j; // indeksot na redot i kolonata na pocetnoto pole
  13.     for(int i = 0; i < redovi; i++) {
  14.         for(int j = 0; j < koloni; j++) {
  15.             cin >> lavirint[i][j];
  16.             poseteno[i][j] = 0;
  17.             if(lavirint[i][j] == 'P') {
  18.                 pocetok_i = i;
  19.                 pocetok_j = j;
  20.             }
  21.         }
  22.     }
  23.    
  24.     queue<int> Q;
  25.     Q.push(pocetok_i);
  26.     Q.push(pocetok_j);
  27.     poseteno[pocetok_i][pocetok_j] = 1;
  28.     while(Q.size() > 0) {
  29.         int ci = Q.front();
  30.         Q.pop();
  31.         int cj = Q.front();
  32.         Q.pop();
  33.         cout << ci << " " << cj << endl;
  34.        
  35.         // prvo treba da proverime dali slucajno sme stignale na kraj
  36.         if(lavirint[ci][cj] == 'K') {
  37.             cout << "Stignavme do krajot" << endl;
  38.             break;
  39.         }
  40.         // probuvame da se dvizime nagore
  41.         if(ci - 1 >= 0 and lavirint[ci - 1][cj] != '#' and poseteno[ci - 1][cj] == 0) {
  42.             Q.push(ci - 1);
  43.             Q.push(cj);
  44.             poseteno[ci - 1][cj] = 1;
  45.         }
  46.        
  47.         // probuvame da se dvizime nadole
  48.         if(ci + 1 < redovi and lavirint[ci + 1][cj] != '#' and poseteno[ci + 1][cj] == 0) {
  49.             Q.push(ci + 1);
  50.             Q.push(cj);
  51.             poseteno[ci + 1][cj] = 1;
  52.         }
  53.        
  54.         //probuvame da se dvizime levo
  55.         if(cj - 1 >= 0 and lavirint[ci][cj - 1] != '#' and poseteno[ci][cj - 1] == 0) {
  56.             Q.push(ci);
  57.             Q.push(cj - 1);
  58.             poseteno[ci][cj - 1] = 1;
  59.         }
  60.        
  61.         // probuvame da se dvizime desno
  62.         if(cj + 1 < koloni and lavirint[ci][cj + 1] != '#' and poseteno[ci][cj + 1] == 0) {
  63.             Q.push(ci);
  64.             Q.push(cj + 1);
  65.             poseteno[ci][cj + 1] = 1;
  66.         }
  67.        
  68.     }
  69.    
  70.     return 0;
  71. }
  72. /*
  73.  
  74.  4 5
  75.  .....
  76.  P#...
  77.  .....
  78.  #.K..
  79.  **/
  80.  
Advertisement
RAW Paste Data Copied
Advertisement