Submission #1065017

#TimeUsernameProblemLanguageResultExecution timeMemory
1065017Dennis_JasonMaze (JOI23_ho_t3)C++14
8 / 100
91 ms15184 KiB
#include <bitset>
#include <cmath>
#include <functional>
#include <algorithm>
#include <numeric>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <unordered_map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <cstring>
#include <climits>
#define pb push_back
#define MOD 1000000007
#define NMAX 6000001
#define nl '\n'
#define INF 1000000007
#define pii1 pair<int, pair<int,int>>  (1,(1,2));
#define pii pair<int,int>
#define tpl tuple<int,int,int>
using namespace std;
ifstream fin("data.in");
ofstream fout("data.out");
/*
    ====================DEMONSTRATION======================

        n=2
        1....#####..##
        ....##########
        ####..........
        ##########....
        ##########....
        1....####....#
    =========================END===========================

 */
int r,c,n;
int x,y,a,b,node_s,node_f;
int di[]={1,-1,0,0};
int dj[]={0,0,1,-1};
bool inmat(int i,int j)
{
    return i>=1 && i<=r && j>=1 && j<=c;
}
const int R=x,L=y;
void bfs(int** mat)
{
    deque<tpl>dq;
    bool vis[r+1][c+1];
    memset(vis,0,sizeof(vis));
    vis[x][y]=1;
    int ans=INF;
    dq.push_front({x,y,0});
    while(!dq.empty())
    {
        auto[i,j,cost]=dq.front();
        dq.pop_front();
        if(i==a && j==b)
            ans=min(ans,cost);
        for(int d=0;d<4;++d)
        {
            int inou=di[d]+i;
            int jnou=dj[d]+j;
            if(inmat(inou,jnou) && !vis[inou][jnou])
            {
                if(mat[inou][jnou]==0)
                {
                    dq.push_front({inou,jnou,cost});
                }
                else
                {
                    dq.push_back({inou,jnou,cost+1});
                }
                vis[inou][jnou]=1;
            }
        }
    }

    cout<<ans;

}
signed main() {


    cin>>r>>c>>n;
    int **mat= new int*[r+1];
    for(int i=1;i<=r;++i)
        mat[i]=new int[c+1];
    cin>>x>>y;
    cin>>a>>b;
    for(int i=1;i<=r;++i)
    {
        for(int j=1;j<=c;++j)
        {
            char x;
            cin>>x;
            if(x=='.')
                mat[i][j]=0;
            else
                mat[i][j]=1;
        }
    }

    bfs(mat);


    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void bfs(int**)':
Main.cpp:65:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   65 |         auto[i,j,cost]=dq.front();
      |             ^
#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...