fork(7) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. ios::sync_with_stdio(false);
  6. long long test;
  7. cin>>test;
  8. while(test--)
  9. {
  10. long long m,n,x,y,d;
  11. cin>>m>>n>>x>>y>>d;
  12. long long a[m][n];
  13. for(long long i=0;i<m;i++)
  14. {
  15. for(long long j=0;j<n;j++)
  16. {
  17. cin>>a[i][j];
  18. }
  19. }
  20. long long b[m][n];
  21. for(long long i=0;i<m;i++)
  22. {
  23. for(long long j=0;j<n;j++)
  24. b[i][j]=-1;
  25. }
  26. b[0][0]=0;
  27. queue<pair<int,long long > > q;
  28. q.push(make_pair(0,0));
  29. while(!q.empty())
  30. {
  31. long long x1=q.front().first;
  32. long long y1=q.front().second;
  33. q.pop();
  34. long long abovex1=x1-1,abovey1=y1;
  35. long long belowx1=x1+1,belowy1=y1;
  36. long long leftx1=x1,lefty1=y1-1;
  37. long long rightx1=x1,righty1=y1+1;
  38. if(abovex1>=0 && abovex1<m && abovey1>=0 && abovey1<n && b[abovex1][abovey1]==-1 && fabs(a[abovex1][abovey1]-a[x1][y1])<=d)
  39. {
  40. q.push(make_pair(abovex1,abovey1));
  41. b[abovex1][abovey1]=b[x1][y1]+1;
  42. }
  43. if(belowx1>=0 && belowx1<m && belowy1>=0 && belowy1<n && b[belowx1][belowy1]==-1&& fabs(a[belowx1][belowy1]-a[x1][y1])<=d)
  44. {
  45. q.push(make_pair(belowx1,belowy1));
  46. b[belowx1][belowy1]=b[x1][y1]+1;
  47. }
  48. if(leftx1>=0 && leftx1<m && lefty1>=0 && lefty1<n && b[leftx1][lefty1]==-1&& fabs(a[leftx1][lefty1]-a[x1][y1])<=d)
  49. {
  50. q.push(make_pair(leftx1,lefty1));
  51. b[leftx1][lefty1]=b[x1][y1]+1;
  52. }
  53. if(rightx1>=0 && rightx1<m && righty1>=0 && righty1<n && b[rightx1][righty1]==-1&& fabs(a[rightx1][righty1]-a[x1][y1])<=d)
  54. {
  55. q.push(make_pair(rightx1,righty1));
  56. b[rightx1][righty1]=b[x1][y1]+1;
  57. }
  58. if(b[x-1][y-1]!=-1)
  59. break;
  60. }
  61. if(b[x-1][y-1]==-1)
  62. cout<<b[x-1][y-1]<<"\n";
  63. else
  64. cout<<b[x-1][y-1]-1<<"\n";
  65. /*
  66.   for(long long i=0;i<n;i++)
  67.   {
  68.   for(long long j=0;j<m;j++)
  69.   {
  70.   cout<<b[i][j]<<"\t";
  71.   }
  72.   cout<<"\n";
  73.   }
  74.   */
  75. }
  76. return 0;
  77. }
Success #stdin #stdout 0s 3240KB
stdin
3
3 3 3 3 2
1 2 3
6 9 4
7 8 5
3 3 3 3 1
1 8 3
9 5 6
7 2 4
3 3 3 3 1
1 6 7
2 5 8
3 4 9
stdout
3
-1
7