package a.b.c.mytest;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
/**
* 广度优先搜索算法
* @author chenhao02
*
*/
public class TestBFS {
/**
* 广度优先搜索算法-计算所有点到点0的距离
* @param nodes 节点(0,1,2,3,4.....)
* @param edges 边,edges[0][1] = 1表示节点0到节点1有边,否则为0
*/
public static void bfs(int edges[][],int nodes){
int WHITE = 0,GRAY=1,BLACK=2;
int color[] = new int[nodes];
int distance[] = new int[nodes];
int parent[] = new int[nodes];
Arrays.fill(color, WHITE);
Arrays.fill(parent, -1);
Queue<Integer> queue = new LinkedList<Integer>();
//处理第一个节点
distance[0] = 0;
color[0] = GRAY;
queue.offer(0);//放入第一个点到队列中
Integer node = null;
//处理队列中的节点的邻里节点
while((node = queue.poll()) != null){
//遍历node的每一个邻居
for(int i=0;i<nodes;i++){
if(edges[node][i] == 1){ //找到了一个邻里节点
广度优先搜索算法-计算最短距离
最新推荐文章于 2023-03-07 22:30:06 发布