Advertisement
Josif_tepe

Untitled

Nov 18th, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5. int main()
  6. {
  7.     int n, m;
  8.     cin >> n >> m;
  9.    
  10.     char mat[n][m];
  11.     for(int i = 0; i < n; i++) {
  12.         for(int j = 0; j < m; j++) {
  13.             cin >> mat[i][j];
  14.         }
  15.     }
  16.    
  17.     vector<vector<bool>> visited(n, vector<bool>(m, false));
  18.    
  19.     int prezhiveani_ovci = 0;
  20.     int prezhiveani_volci = 0;
  21.     for(int i = 0; i < n; i++) {
  22.         for(int j = 0; j < m; j++) {
  23.             if(!visited[i][j] and mat[i][j] != '#') {
  24.                 queue<int> q;
  25.                 q.push(i);
  26.                 q.push(j);
  27.                
  28.                 visited[i][j] = true;
  29.                
  30.                 int kolku_ovci = 0;
  31.                 int kolku_volci = 0;
  32.                
  33.                 while(!q.empty()) {
  34.                     int ci = q.front();
  35.                     q.pop();
  36.                     int cj = q.front();
  37.                     q.pop();
  38.                  
  39.                     if(mat[ci][cj] == 'v') {
  40.                         kolku_volci++;
  41.                     }
  42.                     if(mat[ci][cj] == 'o') {
  43.                         kolku_ovci++;
  44.                     }
  45.                    
  46.                     if(ci + 1 < n and mat[ci + 1][cj] != '#' and !visited[ci + 1][cj]) {
  47.                         visited[ci + 1][cj] = true;
  48.                         q.push(ci + 1);
  49.                         q.push(cj);
  50.                     }
  51.                     if(ci - 1 >= 0 and mat[ci - 1][cj] != '#' and !visited[ci - 1][cj]) {
  52.                         visited[ci - 1][cj] = true;
  53.                         q.push(ci - 1);
  54.                         q.push(cj);
  55.                     }
  56.                     if(cj + 1 < m and mat[ci][cj + 1] != '#' and !visited[ci][cj + 1]) {
  57.                         visited[ci][cj + 1] = true;
  58.                         q.push(ci);
  59.                         q.push(cj + 1);
  60.                     }
  61.                     if(cj - 1 >= 0 and mat[ci][cj - 1] != '#' and !visited[ci][cj - 1]) {
  62.                         visited[ci][cj - 1] = true;
  63.                         q.push(ci);
  64.                         q.push(cj - 1);
  65.                     }
  66.                 }
  67.                 if(kolku_ovci > kolku_volci) {
  68.                     prezhiveani_ovci += kolku_ovci;
  69.                 }
  70.                 else {
  71.                     prezhiveani_volci += kolku_volci;
  72.                 }
  73.  
  74.                
  75.                
  76.             }
  77.         }
  78.     }
  79.         cout << prezhiveani_ovci << " " << prezhiveani_volci << endl;
  80.    
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement