Submission #1156135

#TimeUsernameProblemLanguageResultExecution timeMemory
1156135irmuunMaze (JOI23_ho_t3)C++20
8 / 100
379 ms80140 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll r,c,n;
    cin>>r>>c>>n;
    ll sr,sc;
    cin>>sr>>sc;
    ll gr,gc;
    cin>>gr>>gc;
    char s[r+5][c+5];
    for(ll i=1;i<=r;i++){
        for(ll j=1;j<=c;j++){
            cin>>s[i][j];
        }
    }
    ll dist[r+5][c+5];
    for(ll i=1;i<=r;i++){
        for(ll j=1;j<=c;j++){
            dist[i][j]=1e9;
        }
    }
    vector<ll>dx={0,0,-1,1};
    vector<ll>dy={-1,1,0,0};
    set<array<ll,3>>q;
    q.insert({0,sr,sc});
    dist[sr][sc]=0;
    while(!q.empty()){
        auto [d,x,y]=*q.begin();
        q.erase(q.begin());
        for(ll k=0;k<4;k++){
            ll nx=x+dx[k],ny=y+dy[k];
            if(nx<1||ny<1||nx>r||ny>c||dist[nx][ny]<1e9) continue;
            if(dist[x][y]+(s[nx][ny]=='#'?1:0)<dist[nx][ny]){
                dist[nx][ny]=dist[x][y]+(s[nx][ny]=='#'?1:0);
                q.insert({dist[nx][ny],nx,ny});
            }
        }
    }
    cout<<dist[gr][gc];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...