Untitled
unknown
java
2 years ago
2.0 kB
7
Indexable
public class UserMainCode { // Function to check if a colony is valid by ensuring all cells are connected private static boolean isValidColony(boolean[][] colony, int m, int n) { // Find the first cell of the colony to start the search int startRow = -1, startCol = -1; for (int i = 0; i < m && startRow == -1; i++) { for (int j = 0; j < n && startCol == -1; j++) { if (colony[i][j]) { startRow = i; startCol = j; } } } // If no cell is part of the colony, it's valid by default if (startRow == -1) return true; // Perform a depth-first search to check connectivity boolean[][] visited = new boolean[m][n]; dfs(colony, visited, startRow, startCol); // If any cell in the colony is not visited, the colony is not valid for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (colony[i][j] && !visited[i][j]) return false; } } return true; } // Depth-first search to mark all reachable cells in the colony private static void dfs(boolean[][] colony, boolean[][] visited, int row, int col) { if (row < 0 || row >= colony.length || col < 0 || col >= colony[0].length || visited[row][col] || !colony[row][col]) { return; } visited[row][col] = true; dfs(colony, visited, row + 1, col); // Down dfs(colony, visited, row - 1, col); // Up dfs(colony, visited, row, col + 1); // Right dfs(colony, visited, row, col - 1); // Left } // Function to count the number of valid colonies public static int Colonies(int input1, int input2) { int m = input1, n = input2; int count = 0; // Go through all possible subsets of cells for (int mask = 0; mask <
Editor is loading...
Leave a Comment