Submission #1123469

#TimeUsernameProblemLanguageResultExecution timeMemory
112346912345678Patkice (COCI20_patkice)C++20
50 / 50
1 ms840 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=105;

int n, m, dp[nx][nx];
char mp[nx][nx];
vector<pair<int, int>> d[nx][nx];
pair<int, int> st, ed;
pair<int, char> res={1e9, 0};

void dfs(pair<int, int> u)
{
    //cout<<"here "<<u.first<<' '<<u.second<<'\n';
    for (auto v:d[u.first][u.second]) dp[v.first][v.second]=dp[u.first][u.second]+1, dfs(v);
}

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
        {
            cin>>mp[i][j];
            dp[i][j]=1e9;
            if (mp[i][j]=='o') st={i, j};
            if (mp[i][j]=='x') ed={i, j};
            if (mp[i][j]=='>') d[i][j+1].push_back({i, j});
            if (mp[i][j]=='<') d[i][j-1].push_back({i, j});
            if (mp[i][j]=='^') d[i-1][j].push_back({i, j});
            if (mp[i][j]=='v') d[i+1][j].push_back({i, j});
        }
    }
    dp[ed.first][ed.second]=1;
    dfs(ed);
    /*
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
        {
            cout<<dp[i][j]<<' ';
        }
        cout<<'\n';
    }
    */
    if (st.first>1) res=min(res, {dp[st.first-1][st.second], 'N'});
    if (st.first<n) res=min(res, {dp[st.first+1][st.second], 'S'});
    if (st.second>1) res=min(res, {dp[st.first][st.second-1], 'W'});
    if (st.second<m) res=min(res, {dp[st.first][st.second+1], 'E'});
    if (res.first>=1e9) cout<<":(";
    else cout<<":)\n"<<res.second;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...