Submission #59499999
Source Code Expand
#include<bits/stdc++.h>
#include"atcoder/all"
using namespace std;
using namespace atcoder;
#define rep(i,n) for(int i=0;i<n;i++)
#define all(a) a.begin(),a.end()
typedef long long ll;
typedef vector<ll> vi;
constexpr ll mod = 1000000007;
typedef modint1000000007 mi;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int dist[4][1001][1001];
struct vertex{
int val,dir,x,y;
};
bool operator< (const vertex &LHS,const vertex &RHS) {
return LHS.val<RHS.val;
}
bool operator> (const vertex &LHS,const vertex &RHS) {
return LHS.val>RHS.val;
}
int main(){
int h,w;cin>>h>>w;
int rs,cs,rt,ct;
cin>>rs>>cs>>rt>>ct;
rs--;cs--;rt--;ct--;
vector<string>S(h);
rep(i,h)cin>>S[i];
rep(i,4)rep(j,h)rep(k,w)dist[i][j][k]=1e9;
dist[0][rs][cs]=dist[1][rs][cs]=dist[2][rs][cs]=dist[3][rs][cs]=0;
priority_queue<vertex,vector<vertex>,greater<vertex>> Q;
Q.push({0,0,rs,cs});
Q.push({0,1,rs,cs});
Q.push({0,2,rs,cs});
Q.push({0,3,rs,cs});
while(Q.size()){
vertex vi=Q.top();
Q.pop();
if(dist[vi.dir][vi.x][vi.y]<vi.val)continue;
rep(k,4){
int nx=vi.x+dx[k],ny=vi.y+dy[k];
if(0<=nx&&nx<h&&0<=ny&&ny<w&&S[nx][ny]=='.'){
if(k==vi.dir){
if(dist[k][nx][ny]>dist[vi.dir][vi.x][vi.y]){
dist[k][nx][ny]=dist[vi.dir][vi.x][vi.y];
Q.push({dist[k][nx][ny],k,nx,ny});
}
}
else{
if(dist[k][nx][ny]>dist[vi.dir][vi.x][vi.y]+1){
dist[k][nx][ny]=dist[vi.dir][vi.x][vi.y]+1;
Q.push({dist[k][nx][ny],k,nx,ny});
}
}
}
}
}
cout<<min({dist[0][rt][ct],dist[1][rt][ct],dist[2][rt][ct],dist[3][rt][ct]})<<endl;
}
Submission Info
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
4 / 4 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, sample_01.txt, sample_02.txt, sample_03.txt |
Case Name |
Status |
Exec Time |
Memory |
in01.txt |
AC |
5 ms |
5280 KiB |
in02.txt |
AC |
4 ms |
5188 KiB |
in03.txt |
AC |
2 ms |
5084 KiB |
in04.txt |
AC |
2 ms |
5100 KiB |
in05.txt |
AC |
1 ms |
4140 KiB |
in06.txt |
AC |
3 ms |
6856 KiB |
in07.txt |
AC |
2 ms |
6708 KiB |
in08.txt |
AC |
1 ms |
3616 KiB |
in09.txt |
AC |
1 ms |
3616 KiB |
in10.txt |
AC |
5 ms |
5440 KiB |
in11.txt |
AC |
5 ms |
5376 KiB |
in12.txt |
AC |
1 ms |
3568 KiB |
in13.txt |
AC |
1 ms |
3552 KiB |
in14.txt |
AC |
6 ms |
19144 KiB |
in15.txt |
AC |
6 ms |
19216 KiB |
in16.txt |
AC |
318 ms |
22840 KiB |
in17.txt |
AC |
545 ms |
53792 KiB |
in18.txt |
AC |
403 ms |
24972 KiB |
in19.txt |
AC |
634 ms |
86464 KiB |
in20.txt |
AC |
767 ms |
86368 KiB |
in21.txt |
AC |
634 ms |
85508 KiB |
in22.txt |
AC |
249 ms |
28428 KiB |
in23.txt |
AC |
115 ms |
20420 KiB |
in24.txt |
AC |
773 ms |
86452 KiB |
in25.txt |
AC |
63 ms |
21148 KiB |
sample_01.txt |
AC |
1 ms |
3580 KiB |
sample_02.txt |
AC |
1 ms |
3512 KiB |
sample_03.txt |
AC |
1 ms |
3572 KiB |