제출 #1339264

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

char arr[4007][4007];
bool visited[4007][4007];
vector<pair<int,int>> dir={{-1,0},{1,0},{0,-1},{0,1}};
signed main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    int n,m; cin >> n >> m;
    for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) cin >> arr[i][j];
    deque<pair<int,pair<int,int>>> q;
    q.push_back({1,{1,1}});
    visited[1][1]=true;
    int ans=0;
    while(!q.empty()){
        int dis=q.front().first;
        int x=q.front().second.first;
        int y=q.front().second.second;
        ans=max(ans,dis);
        q.pop_front();
        for(auto d:dir){
            int tx=x+d.first;
            int ty=y+d.second;
            if(tx>n || tx<1 || ty>m || ty<1) continue;
            if(arr[tx][ty]=='.' || visited[tx][ty]) continue;
            visited[tx][ty]=true;
            if(arr[tx][ty]==arr[x][y]){
                q.push_front({dis,{tx,ty}});
            }
            else{
                q.push_back({dis+1,{tx,ty}});
            }
        }
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...