fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define ull unsigned long long
  5. #define mod 1000000007
  6. #define pb push_back
  7. const int N =1005;
  8. int n ,m,k ,sti,stj,eni,enj,vis[N][N];
  9. char g[N][N];
  10. int ii[4]= {0,0,1,-1};
  11. int jj[4]= {1,-1,0,0};
  12. int bfs()
  13. {
  14. queue<pair<pair<int,int>,int>>q;
  15. q.push({{sti,stj},0});
  16. vis[sti][stj]=1;
  17. while(!q.empty())
  18. {
  19. int i= q.front().first.first;
  20. int j= q.front().first.second;
  21. int s= q.front().second;
  22. q.pop();
  23. if(i== eni && j== enj) return s;
  24. for(int x=0;x<4;x++)
  25. {
  26. int chi=i,chj=j;
  27. for(int y=0;y<k;y++)
  28. {
  29. chi+=ii[x],chj+=jj[x];
  30. if(chi >0 && chi<=n && chj>0 && chj<=m &&!vis[chi][chj] && g[chi][chj]!= '#')
  31. {
  32. q.push({{chi,chj},s+1});
  33. vis[chi][chj]=1;
  34. }
  35. else break;
  36. }
  37. }
  38. }
  39. return -1;
  40. }
  41. int main()
  42. {
  43. ios::sync_with_stdio(0);
  44. cin.tie(0);
  45. cout.tie(0);
  46. cin >> n >>m >> k;
  47. for(int i=1;i<=n;i++)
  48. {
  49. for(int j=1;j<=m;j++)
  50. cin >> g[i][j];
  51. }
  52. cin >> sti >> stj >> eni>>enj;
  53. cout <<bfs();
  54. }
  55.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
Standard output is empty