Advertisement
mickypinata

TOI13: Robot

Nov 21st, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef pair<int, int> pii;
  5.  
  6. const int N = 2000;
  7. const pii dir[4] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
  8.  
  9. int board[N + 10][N + 10];
  10. int row, col;
  11.  
  12. int main(){
  13.  
  14.     scanf("%d %d", &row, &col);
  15.     queue<pii> Q;
  16.     vector<vector<int>> dist(row + 1, vector<int>(col + 1, -1));
  17.     for(int i = 1; i <= row; ++i){
  18.         for(int j = 1; j <= col; ++j){
  19.             char tmpChar;
  20.             scanf(" %c", &tmpChar);
  21.             switch(tmpChar){
  22.             case 'X':
  23.                 Q.emplace(i, j);
  24.                 dist[i][j] = 0;
  25.                 board[i][j] = 1;
  26.                 break;
  27.             case 'E':
  28.                 board[i][j] = 1;
  29.                 break;
  30.             case 'A':
  31.                 board[i][j] = 2;
  32.                 break;
  33.             default:
  34.                 break;
  35.             }
  36.         }
  37.     }
  38.  
  39.     int cnt = 0;
  40.     int sumDist = 0;
  41.     while(!Q.empty()){
  42.         int ur = Q.front().first;
  43.         int uc = Q.front().second;
  44.         Q.pop();
  45.         for(int i = 0; i < 4; ++i){
  46.             int vr = ur + dir[i].first;
  47.             int vc = uc + dir[i].second;
  48.             if(board[vr][vc] != 0 && dist[vr][vc] == -1){
  49.                 dist[vr][vc] = dist[ur][uc] + 1;
  50.                 Q.emplace(vr, vc);
  51.                 if(board[vr][vc] == 2){
  52.                     ++cnt;
  53.                     sumDist += dist[vr][vc] * 2;
  54.                 }
  55.             }
  56.         }
  57.     }
  58.  
  59.     cout << cnt << " " << sumDist;
  60.  
  61.     return 0;
  62. }
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement