Advertisement
Guest User

TIOJ 1022

a guest
Mar 7th, 2020
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ff first
  3. #define ss second
  4.  
  5. using namespace std;
  6. typedef pair<int,int> pii;
  7.  
  8. int g[102][102] = {};
  9. int dis[102][102] = {};
  10. inline int ABS(int a){return a>0?a:-a;}
  11. signed main(){
  12.     ios::sync_with_stdio(false);
  13.     cin.tie(0);
  14.     int q,m,n;
  15.     cin >> q;
  16.     while(q--){
  17.         cin >> m >> n;
  18.         for(int i = 1;i <= m;i++)
  19.             for(int j = 1;j <= n;j++){
  20.                 cin >> g[i][j]; dis[i][j] = 1<<30;
  21.                 g[0][j] = g[m+1][j] = dis[0][j] = dis[m+1][j] = 1<<30;
  22.                 g[i][0] = g[i][n+1] = dis[i][0] = dis[i][n+1] = 1<<30;
  23.             }
  24.         queue<pii> qu;
  25.         qu.push({1,1}); dis[1][1] = 0;
  26.         while(!qu.empty()){
  27.             int x = qu.front().ff, y = qu.front().ss; qu.pop();
  28.             int adj[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
  29.             for(int i = 0;i < 4;i++){
  30.                 int nx = x+adj[i][0],ny = y+adj[i][1];
  31.                 if(ABS(g[nx][ny]-g[x][y])<=5 && dis[nx][ny] > dis[x][y]+1){
  32.                     dis[nx][ny] = dis[x][y]+1;
  33.                     qu.push({nx,ny});
  34.                 }
  35.             }
  36.         }
  37.         cout << dis[m][n] << '\n';
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement