This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(),x.end()
#define abcorz ios_base::sync_with_stdio(false);cin.tie(0);
const int INF=1e18;
int32_t main(){
abcorz;
int n,m,k;cin>>n>>m>>k;
vector<vector<int>> v(n+2,vector<int>(m+2,1));
vector<vector<int>> dis(n+2,vector<int>(m+2,INF));
int s1,s2;cin>>s1>>s2;
int t1,t2;cin>>t1>>t2;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char c;cin>>c;
v[i][j]=(c=='#');
}
}
vector<int> dx={-1,1,0,0},dy={0,0,-1,1};
priority_queue<pair<int,pair<int,int>>> pq;
dis[s1][s2]=0;
pq.push({0,{s1,s2}});
while(pq.size()){
auto[d,tmp]=pq.top();
pq.pop();
d=-d;
auto [s1,s2]=tmp;
if(d!=dis[s1][s2]){
continue;
}
for(int k=0;k<4;k++){
int t1=s1+dx[k];
int t2=s2+dy[k];
if(t1==0||t1==n+1||t2==0||t2==m+1){
continue;
}
if(dis[t1][t2]>dis[s1][s2]+v[s1][s2]+v[t1][t2]){
dis[t1][t2]=dis[s1][s2]+v[s1][s2]+v[t1][t2];
pq.push({-dis[t1][t2],{t1,t2}});
}
}
}
cout<<dis[t1][t2]/2<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |