Advertisement
Josif_tepe

Untitled

May 13th, 2022
698
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4.  
  5. int main() {
  6.     int redovi, koloni;
  7.     cin >> redovi >> koloni;
  8.    
  9.     char lavirint[redovi][koloni];
  10.     int poseteno[redovi][koloni];
  11.     int si, sj;
  12.     for(int i = 0; i < redovi; i++) {
  13.         for(int j = 0; j < koloni; j++) {
  14.             cin >> lavirint[i][j];
  15.             if(lavirint[i][j] == 'P') {
  16.                 si = i;
  17.                 sj = j;
  18.             }
  19.             poseteno[i][j] = 0;
  20.         }
  21.     }
  22.     int direction_i[] = {+1, -1, 0, 0};
  23.     int direction_j[] = {0,  0, +1,-1};
  24.     queue<int> Q;
  25.     Q.push(si);
  26.     Q.push(sj);
  27.     Q.push(0);
  28.    
  29.     while(Q.size() > 0) {
  30.         int ci = Q.front();
  31.         Q.pop();
  32.         int cj = Q.front();
  33.         Q.pop();
  34.         int cekor = Q.front();
  35.         Q.pop();
  36.        
  37.         if(lavirint[ci][cj] == 'K') {
  38.             cout << cekor << endl;
  39.             break;
  40.         }
  41.         for(int i = 0; i < 4; i++) {
  42.             int ti = ci + direction_i[i];
  43.             int tj = cj + direction_j[i];
  44.             if(ti < redovi and ti >= 0 and tj < koloni and tj >= 0 and lavirint[ti][tj] != '#' and poseteno[ti][tj] == 0) {
  45.                 Q.push(ti);
  46.                 Q.push(tj);
  47.                 Q.push(cekor + 1);
  48.                 poseteno[ti][tj] = 1;
  49.             }
  50.         }
  51.     }
  52.     return 0;
  53. }
  54. /*
  55.  8 8
  56.   P...#..A
  57.   ........
  58.   ...#K...
  59.   B.......
  60.   ##......
  61.   ########
  62.   ........
  63.   ........
  64.  
  65.  
  66.  **/
  67.  
Advertisement
RAW Paste Data Copied
Advertisement