5
public int countServers(int[][] grid) {6
parent = new int[grid.length * grid[0].length];7
rank = new int[grid.length * grid[0].length];8
for (int i = 0; i < parent.length; i++) {12
for (int i = 0; i < grid.length; i++) {13
for (int j = 0; j < grid[0].length; j++) {14
if (grid[i][j] == 1) {20
for (int i = 0; i < parent.length; i++) {21
if (parent[i] != i || rank[i] > 0) {28
public void check(int sr, int sc, int[][] grid) {29
int mbox = sr * grid[0].length + sc;30
for (int i = sr; i < grid.length; i++) {31
if (grid[i][sc] == 1) {32
int cbox = i * grid[0].length + sc;40
for (int j = sc; j < grid[0].length; j++) {41
if (grid[sr][j] == 1) {42
int cbox = sr * grid[0].length + j;56
parent[x] = find(parent[x]);61
void union(int x, int y) {62
if (rank[x] > rank[y]) {64
} else if (rank[y] > rank[x]) {