上代码:
public static void BFS(int[][] G, int edgeNum, int begin, boolean[] visited) { Queue<Integer> Q=new LinkedList<Integer>(); Q.add(begin); visited[begin] = true; while (!Q.isEmpty()) { int tmp = Q.peek(); Q.poll(); for (int i = 0; i < edgeNum; i++) { if (!visited[i] && G[tmp][i]==1) { Q.add(i); visited[i] = true; } } } }
public int GetCount(int[][] grid){ int count = 0; int verNum = grid.length; boolean[] visited = new boolean[verNum]; for (int i = 0; i < verNum; i++) { if (!visited[i]) { BFS(grid,verNum,i,visited); count++; } } return count; }