Submission

Status:
PPPPPPP

Score: 100

User: Monasm

Problemset: Sirabyrinth 1

Language: cpp

Time: 0.002 second

Submitted On: 2024-11-14 23:50:14

#include <bits/stdc++.h>

#define pii pair<int,int>

using namespace std;

int gy[]={0,0,-1,1};
int gx[]={1,-1,0,0};
char op[]={'D','U','L','R'};

int main(){
    int n,m,sx,sy,ex,ey;cin>>n>>m;
    char adj[n][m];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>adj[i][j];
            if(adj[i][j]=='S'){
                sx = i;sy=j;
            }
        }
    }
    queue<pii> q;
    q.push({sx,sy});
    while(!q.empty()){
        int nx=q.front().first;
        int ny=q.front().second;
        q.pop();
        if(nx==0||nx==n-1||ny==0||ny==m-1){
            ex=nx;ey=ny;break;
        }
        for(int i=0;i<4;i++){
            int x=nx+gx[i];
            int y=ny+gy[i];
            if(0<=x&&x<n&&0<=y&&y<m&&adj[x][y]=='.'){
                adj[x][y]=op[i];
                q.push({x,y});
            }
        }
    }
    string s;
    while(adj[ex][ey]!='S'){
        s+=adj[ex][ey];
        for(int i=0;i<4;i++){
            if(adj[ex][ey]==op[i]){
                ex-=gx[i];
                ey-=gy[i];
                break;
            }
        }
    }
    cout<<s.size()<<endl;
    reverse(s.begin(),s.end());
    cout<<s;
}