제출 #1332829

#제출 시각아이디문제언어결과실행 시간메모리
1332829danielwu11Tracks in the Snow (BOI13_tracks)C++20
2.19 / 100
448 ms126044 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, M;
    cin >> N >> M;
    vector<vector<int>> grid(N, vector<int>(M));
    for(int i=0; i<N; i++){
        string s;
        cin >> s;
        for(int j=0; j<M; j++){
            if(s[j]=='.'){
                grid[i][j]=0;
            }
            if(s[j]=='R'){
                grid[i][j]=1;
            }
            if(s[j]=='F'){
                grid[i][j]=2;
            }
            // cout << grid[i][j] << " ";
        }
        // cout << endl;
    }
    // rabbit is 1, fox is 2
    vector<int> xadj={1, 0, -1, 0};
    vector<int> yadj={0, 1, 0, -1};
    vector<vector<int>> visited(N, vector<int>(M, -1));
    queue<pair<int, int>> q;
    q.push({0, 0});
    visited[0][0]=1;
    int maxdist=1;
    while(!q.empty()){
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        for(int k=0; k<4; k++){
            int newx=x+xadj[k];
            int newy=y+yadj[k];
            if((newx<0 || newx>=N || newy<0 || newy>=M)||visited[newx][newy]!=-1||grid[newx][newy]!=0){
                continue;
            }
            if (grid[x][y]==grid[newx][newy]) visited[newx][newy]=visited[x][y];
            else visited[newx][newy]=visited[x][y]+1;
            q.push({newx, newy});
            maxdist=max(maxdist,visited[newx][newy]);
        }
    }
    cout << maxdist << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...