Untitled
unknown
java
2 years ago
2.0 kB
21
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