Advertisement
Josif_tepe

Untitled

Dec 16th, 2024
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     int L, W;
  9.     cin >> L >> W;
  10.    
  11.     int treba;
  12.     cin >> treba;
  13.    
  14.    
  15.     int n;
  16.     cin >> n;
  17.    
  18.     vector<pair<int, int>> v(n);
  19.    
  20.     vector<vector<bool>> visited(L, vector<bool>(W, false));
  21.     for(int i = 0; i < n; i++) {
  22.         cin >> v[i].first >> v[i].second;
  23.         v[i].first--;
  24.         v[i].second--;
  25.        
  26.         visited[v[i].first][v[i].second] = true;
  27.     }
  28.    
  29.     queue<vector<pair<int, int>>> q;
  30.     queue<int> q_mesec;
  31.    
  32.     treba -= n;
  33.    
  34.     q.push(v);
  35.     q_mesec.push(0);
  36.    
  37.     int di[] = {-1, 1, 0, 0};
  38.     int dj[] = {0, 0, -1, 1};
  39.     while(!q.empty()) {
  40.         vector<pair<int, int>> c = q.front();
  41.         q.pop();
  42.         int mesec = q_mesec.front();
  43.         q_mesec.pop();
  44.        
  45.         if(treba <= 0) {
  46.             cout << mesec << endl;
  47.             break;
  48.         }
  49.        
  50.         vector<pair<int, int>> t;
  51.         for(int i = 0; i < c.size(); i++) {
  52.             for(int j = 0; j < 4; j++) {
  53.                 int ti = c[i].first + di[j];
  54.                 int tj = c[i].second + dj[j];
  55.                
  56.                 if(ti >= 0 and ti < L and tj >= 0 and tj < W and !visited[ti][tj]) {
  57.                     visited[ti][tj] = true;
  58.                     treba--;
  59.                     t.push_back(make_pair(ti, tj));
  60.                 }
  61.             }
  62.         }
  63.         q.push(t);
  64.         q_mesec.push(mesec + 1);
  65.     }
  66.    
  67.    
  68.  
  69.    
  70.     return 0;
  71.  
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement