Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Author - Saurav Kalsoor
- //House Renovation - JAVA
- import java.util.*;
- public class Test {
- static Scanner sc = new Scanner(System.in);
- static int area = 0;
- public static void dfs(int[][] a,int i,int j,Boolean[][] visited) {
- if(visited[i][j]) return;
- visited[i][j] = true;
- area++;
- if((a[i][j] & 1)==0) {
- dfs(a,i,j-1,visited);
- }
- if((a[i][j] & 2)==0) {
- dfs(a,i+1,j,visited);
- }
- if((a[i][j] & 4)==0) {
- dfs(a,i,j+1,visited);
- }
- if((a[i][j] & 8)==0) {
- dfs(a,i-1,j,visited);
- }
- }
- public static int[] houseRenovation(int n, int m, int q, int[][] a,int[] queries){
- Boolean[][] visited = new Boolean[n][m];
- for(int i=0;i<n;i++) {
- for(int j=0;j<m;j++) {
- visited[i][j] = false;
- }
- }
- Map<Integer,Integer> hm = new HashMap<Integer,Integer>();
- for(int i=0;i<n;i++) {
- for(int j=0;j<m;j++) {
- if(visited[i][j] == false) {
- area = 0;
- dfs(a,i,j,visited);
- hm.put(area,hm.getOrDefault(area, 0)+1);
- }
- }
- }
- int[] result = new int[q];
- for(int i=0;i<queries.length;i++) {
- if(hm.containsKey(queries[i])) {
- result[i] = hm.get(queries[i]);
- }
- else {
- result[i] = 0;
- }
- }
- return result;
- }
- public static void main(String[] args) {
- int n = sc.nextInt();
- int m = sc.nextInt();
- int q = 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();
- }
- }
- int[] queries = new int[q];
- for(int i=0;i<queries.length;i++) {
- queries[i] = sc.nextInt();
- }
- int[] result = houseRenovation(n,m,q,a,queries);
- for(int i=0;i<result.length;i++) {
- System.out.print(result[i] + " ");
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement