(java)DFS求连通分量的个数

直接上代码:

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] g=new int[][]
				{
					{0,1,0,0},
					{1,0,0,0},
					{0,0,0,0},
					{0,0,0,0}
				};
				System.out.println(DFS(g));
	}
	public static int DFS(int[][] grid){
		boolean[] visited=new boolean[grid.length];
		int count=0;
		for(int i=0;i<grid.length;i++){
			if(!visited[i]){
				count++;
				dfs(i,grid,visited);
			}
		}
		return count;
	}
	public static void dfs(int i,int[][] grid,boolean[] visited){
		visited[i]=true;
		for(int j=0;j<grid.length;j++){
			if(!visited[j] && grid[i][j]==1){
				dfs(j,grid,visited);
			}
		}
	}
}


猜你喜欢

转载自blog.csdn.net/chaiqunxing51/article/details/52813202