Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef pair<int, int> pii;
- const int N = 2000;
- const pii dir[4] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
- int board[N + 10][N + 10];
- int row, col;
- int main(){
- scanf("%d %d", &row, &col);
- queue<pii> Q;
- vector<vector<int>> dist(row + 1, vector<int>(col + 1, -1));
- for(int i = 1; i <= row; ++i){
- for(int j = 1; j <= col; ++j){
- char tmpChar;
- scanf(" %c", &tmpChar);
- switch(tmpChar){
- case 'X':
- Q.emplace(i, j);
- dist[i][j] = 0;
- board[i][j] = 1;
- break;
- case 'E':
- board[i][j] = 1;
- break;
- case 'A':
- board[i][j] = 2;
- break;
- default:
- break;
- }
- }
- }
- int cnt = 0;
- int sumDist = 0;
- while(!Q.empty()){
- int ur = Q.front().first;
- int uc = Q.front().second;
- Q.pop();
- for(int i = 0; i < 4; ++i){
- int vr = ur + dir[i].first;
- int vc = uc + dir[i].second;
- if(board[vr][vc] != 0 && dist[vr][vc] == -1){
- dist[vr][vc] = dist[ur][uc] + 1;
- Q.emplace(vr, vc);
- if(board[vr][vc] == 2){
- ++cnt;
- sumDist += dist[vr][vc] * 2;
- }
- }
- }
- }
- cout << cnt << " " << sumDist;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement