Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Solution {
- static Scanner sc = new Scanner(System.in);
- public static int minimumRoom(int N,int M,int[][] A){
- int[][] dist = new int[N][M];
- boolean[][] visited = new boolean[N][M];
- for(int i=0;i<N;i++){
- for(int j=0;j<M;j++){
- dist[i][j] = 10000000;
- visited[i][j] = false;
- }
- }
- Queue<Integer> qx=new LinkedList<>();
- Queue<Integer> qy=new LinkedList<>();
- qx.add(0);
- qy.add(0);
- dist[0][0] = 1;
- visited[0][0] = true;
- while(!qx.isEmpty()) {
- int i = qx.remove();
- int j = qy.remove();
- if(i+1<N && visited[i+1][j] == false && A[i+1][j]!=A[i][j]){
- dist[i+1][j] = dist[i][j]+1;
- visited[i+1][j] = true;
- qx.add(i+1);
- qy.add(j);
- }
- if(j+1<M && visited[i][j+1] == false && A[i][j+1]!=A[i][j]){
- dist[i][j+1] = dist[i][j]+1;
- visited[i][j+1] = true;
- qx.add(i);
- qy.add(j+1);
- }
- if(i-1>=0 && visited[i-1][j] == false && A[i-1][j]!=A[i][j]){
- dist[i-1][j] = dist[i][j]+1;
- visited[i-1][j] = true;
- qx.add(i-1);
- qy.add(j);
- }
- if(j-1>=0 && visited[i][j-1] == false && A[i][j-1]!=A[i][j]){
- dist[i][j-1] = dist[i][j]+1;
- visited[i][j-1] = true;
- qx.add(i);
- qy.add(j-1);
- }
- }
- if(visited[N-1][M-1]) {
- return dist[N-1][M-1];
- }
- return -1;
- }
- public static void main(String[] args) {
- int N,M;
- N = sc.nextInt();
- M = sc.nextInt();
- int[][] A = new int[N][M];
- for(int i=0;i<N;i++){
- for(int j=0;j<M;j++){
- A[i][j] = sc.nextInt();
- }
- }
- System.out.println(minimumRoom(N,M,A));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement