Submission

Status:
[PPxSSSSSS]

Score: 0

User: Monasm

Problemset: Sirabyrinth 5

Language: cpp

Time: 0.177 second

Submitted On: 2024-11-23 15:26:34


#include <bits/stdc++.h>

using namespace std;

int gx[] = {1,-1,0,0};
int gy[] = {0,0,-1,1};

int main(){
    int n,m,sx,sy;cin>>n>>m;
    queue<pair<int,int>> q;
    vector<vector<char>> adj(n,vector<char>(m));
    vector<vector<int>> dist(n,vector<int>(m,1e9));
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>adj[i][j];
            if(adj[i][j]=='E'){
                q.push({i,j});
                dist[i][j]=0;
            }
            if(adj[i][j]=='S'){
                sx=i;sy=j;
            }
        }
    }
    int cnt=0;
    while(!q.empty()){
        int size = q.size();
        for(int i=0;i<size;i++){
            int nx=q.front().first,ny=q.front().second;
            dist[nx][ny] = cnt;
            q.pop();
            for(int j=0;j<4;j++){
                int x=nx+gx[j],y=ny+gy[j];
                if(0<=x&&x<n&&0<=y&&y<m&&adj[x][y]!='#'&&dist[x][y]==1e9){
                    q.push({x,y});
                }
            }
        }
        cnt++;
    }
    int d = dist[sx][sy],ans = d+1;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(adj[i][j]>='1'&&adj[i][j]<='9'&&dist[i][j]<=d){
                ans+=adj[i][j]-'0';
            }
        }
    }
    cout<<ans;
}