Advertisement
saurav_kalsoor

Untitled

Jun 22nd, 2022
880
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.20 KB | None | 0 0
  1.  
  2. import java.util.*;
  3.  
  4. public class Solution {
  5.    
  6.     static Scanner sc = new Scanner(System.in);
  7.  
  8.    
  9.     public static int minimumRoom(int N,int M,int[][] A){
  10.        
  11.         int[][] dist = new int[N][M];
  12.         boolean[][] visited = new boolean[N][M];
  13.        
  14.         for(int i=0;i<N;i++){
  15.             for(int j=0;j<M;j++){
  16.                 dist[i][j] = 10000000;
  17.                 visited[i][j] = false;
  18.             }
  19.         }
  20.        
  21.          Queue<Integer> qx=new LinkedList<>();
  22.          Queue<Integer> qy=new LinkedList<>();
  23.          
  24.          qx.add(0);
  25.          qy.add(0);
  26.          
  27.          dist[0][0] = 1;
  28.          visited[0][0] = true;
  29.          
  30.          while(!qx.isEmpty()) {
  31.              int i = qx.remove();
  32.              int j = qy.remove();
  33.              
  34.              if(i+1<N && visited[i+1][j] == false && A[i+1][j]!=A[i][j]){
  35.                  dist[i+1][j] = dist[i][j]+1;
  36.                  visited[i+1][j] = true;
  37.                  qx.add(i+1);
  38.                  qy.add(j);
  39.              }
  40.              if(j+1<M && visited[i][j+1] == false && A[i][j+1]!=A[i][j]){
  41.                  dist[i][j+1] = dist[i][j]+1;
  42.                  visited[i][j+1] = true;
  43.                  qx.add(i);
  44.                  qy.add(j+1);
  45.              }
  46.              if(i-1>=0 && visited[i-1][j] == false && A[i-1][j]!=A[i][j]){
  47.                  dist[i-1][j] = dist[i][j]+1;
  48.                  visited[i-1][j] = true;
  49.                  qx.add(i-1);
  50.                  qy.add(j);
  51.              }
  52.              if(j-1>=0 && visited[i][j-1] == false && A[i][j-1]!=A[i][j]){
  53.                  dist[i][j-1] = dist[i][j]+1;
  54.                  visited[i][j-1] = true;
  55.                  qx.add(i);
  56.                  qy.add(j-1);
  57.              }
  58.          }
  59.          if(visited[N-1][M-1]) {
  60.              return dist[N-1][M-1];
  61.          }
  62.          return -1;
  63.     }
  64.    
  65.     public static void main(String[] args) {
  66.         int N,M;
  67.         N = sc.nextInt();
  68.         M = sc.nextInt();
  69.        
  70.         int[][] A = new int[N][M];
  71.        
  72.         for(int i=0;i<N;i++){
  73.             for(int j=0;j<M;j++){
  74.                 A[i][j] = sc.nextInt();
  75.             }
  76.         }
  77.        
  78.         System.out.println(minimumRoom(N,M,A));
  79.     }
  80. }
  81.  
  82.  
  83.  
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement