Advertisement
Samkit5025

House Renovation

May 18th, 2022
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Test {
  4.    
  5.     static Scanner sc = new Scanner(System.in);
  6.     static int area = 0;
  7.    
  8.    
  9.     public static void dfs(int[][] a,int i,int j,Boolean[][] visited) {
  10.         if(visited[i][j]) return;
  11.        
  12.         visited[i][j] = true;
  13.         area++;
  14.         if((a[i][j] & 1)==0) {
  15.             dfs(a,i,j-1,visited);
  16.         }
  17.         if((a[i][j] & 2)==0) {
  18.             dfs(a,i+1,j,visited);
  19.         }
  20.         if((a[i][j] & 4)==0) {
  21.             dfs(a,i,j+1,visited);
  22.         }
  23.         if((a[i][j] & 8)==0) {
  24.             dfs(a,i-1,j,visited);
  25.         }
  26.     }
  27.  
  28.     public static int[] houseRenovation(int n, int m, int q, int[][] a,int[] queries){
  29.         Boolean[][] visited = new Boolean[n][m];
  30.        
  31.         for(int i=0;i<n;i++) {
  32.             for(int j=0;j<m;j++) {
  33.                 visited[i][j] = false;
  34.             }
  35.         }
  36.        
  37.         Map<Integer,Integer> hm = new HashMap<Integer,Integer>();
  38.        
  39.         for(int i=0;i<n;i++) {
  40.             for(int j=0;j<m;j++) {
  41.                 if(visited[i][j] == false) {
  42.                     area = 0;
  43.                     dfs(a,i,j,visited);
  44.                     hm.put(area,hm.getOrDefault(area, 0)+1);
  45.                 }
  46.             }
  47.         }
  48.            
  49.         int[] result = new int[q];
  50.         for(int i=0;i<queries.length;i++) {
  51.             if(hm.containsKey(queries[i])) {
  52.                 result[i] = hm.get(queries[i]);
  53.             }
  54.             else {
  55.                 result[i] = 0;
  56.             }
  57.         }
  58.        
  59.         return result;
  60.     }
  61.    
  62.     public static void main(String[] args) {
  63.         int n = sc.nextInt();
  64.         int m = sc.nextInt();
  65.         int q = sc.nextInt();
  66.        
  67.         int[][] a = new int[n][m];
  68.         for(int i=0;i<n;i++) {
  69.             for(int j=0;j<m;j++) {
  70.                 a[i][j] = sc.nextInt();
  71.             }
  72.         }
  73.        
  74.         int[] queries = new int[q];
  75.        
  76.         for(int i=0;i<queries.length;i++) {
  77.             queries[i] = sc.nextInt();
  78.         }
  79.        
  80.         int[] result = houseRenovation(n,m,q,a,queries);
  81.         for(int i=0;i<result.length;i++) {
  82.             System.out.print(result[i] + " ");
  83.         }
  84.         System.out.println();
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement