Advertisement
Josif_tepe

Untitled

Nov 25th, 2024
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #include <cmath>
  5. #include <map>
  6. using namespace std;
  7.  
  8. int main() {
  9.     int n, m;
  10.     cin >> n >> m;
  11.    
  12.     int si, sj;
  13.     cin >> si >> sj;
  14.    
  15.     si--;
  16.     sj--;
  17.    
  18.     vector<vector<int>> mat(n, vector<int>(m, 0));
  19.     vector<vector<bool>> visited(n, vector<bool>(m, false));
  20.     visited[si][sj] = true;
  21.    
  22.     queue<int> q;
  23.     q.push(si);
  24.     q.push(sj);
  25.     q.push(0);
  26.    
  27.     int di[] = {-1, 1, 0, 0};
  28.     int dj[] = {0, 0, -1, 1};
  29.    
  30.     int max_ucenik = 0;
  31.     while(!q.empty()) {
  32.         int ci = q.front();
  33.         q.pop();
  34.         int cj = q.front();
  35.         q.pop();
  36.         int ucenik = q.front();
  37.         q.pop();
  38.        
  39.         max_ucenik = max(max_ucenik, ucenik);
  40.         mat[ci][cj] = ucenik;
  41.        
  42.         for(int i = 0; i < 4; i++) {
  43.             int ti = ci + di[i];
  44.             int tj = cj + dj[i];
  45.            
  46.             if(ti >= 0 and ti < n and tj >= 0 and tj < m and !visited[ti][tj]) {
  47.                 q.push(ti);
  48.                 q.push(tj);
  49.                 q.push(ucenik + 1);
  50.                
  51.                 visited[ti][tj] = true;
  52.             }
  53.         }
  54.     }
  55.    
  56.     int cnt = 0;
  57.     for(int i = 0; i < n; i++) {
  58.         for(int j = 0; j < m; j++) {
  59.             if(mat[i][j] == max_ucenik) {
  60.                 cnt++;
  61.             }
  62.         }
  63.     }
  64.     cout << max_ucenik << " " << cnt << endl;
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement