当前位置:实例文章 » JAVA Web实例» [文章]01 矩阵(力扣)多源广度优先搜索 JAVA

01 矩阵(力扣)多源广度优先搜索 JAVA

发布人:shili8 发布时间:2025-03-10 01:51 阅读次数:0

**矩阵(力扣)多源广度优先搜索**

###问题描述给定一个有向图,图中每个顶点都有一个权值。从每个顶点出发,求出到达其他所有顶点的最短距离。

### 解决方案我们将使用多源广度优先搜索(BFS)来解决这个问题。BFS 是一种图遍历算法,它通过水平层次地访问图中的顶点来实现。

#### Java代码

javaimport java.util.*;

public class Solution {
 public int[][] matrix(int[][] graph) {
 // 获取图中顶点的数量 int n = graph.length;

 // 初始化距离数组,所有距离初始化为无穷大 int[] distance = new int[n];
 Arrays.fill(distance, Integer.MAX_VALUE);

 // 从每个源点出发进行BFS for (int i =0; i < n; i++) {
 Queue queue = new LinkedList<>();
 queue.add(i);
 distance[i] =0;

 while (!queue.isEmpty()) {
 int u = queue.poll();

 // 遍历图中与当前顶点相连的所有顶点 for (int v : graph[u]) {
 if (distance[v] == Integer.MAX_VALUE) {
 // 如果距离为无穷大,则更新距离并加入队列 distance[v] = distance[u] +1;
 queue.add(v);
 }
 }
 }
 }

 return distance;
 }

 public static void main(String[] args) {
 Solution solution = new Solution();
 int[][] graph = {{0,1,2}, {3,4}, {5}};
 int[] result = solution.matrix(graph);

 System.out.println("最短距离:");
 for (int i : result) {
 System.out.print(i + " ");
 }
 }
}

####代码注释* `matrix` 方法从每个源点出发进行BFS,更新图中所有顶点的最短距离。
* `distance` 数组用于存储图中每个顶点的最短距离。
* `queue` 队列用于存储当前正在访问的顶点。
* `graph` 是一个二维数组,表示图中每个顶点与其他顶点之间的连接关系。

### 示例假设我们有一个图,如下所示:

| |0 |1 |2 |
| --- | --- | --- | --- |
| **0** | - |3 |5 |
| **1** |7 | - |9 |
| **2** |11 |13 | - |

我们可以使用上述代码来计算图中每个顶点的最短距离。

### 结果最终结果将是:

最短距离:
035147


这意味着从源点0 出发,到达其他所有顶点的最短距离分别为0、3、5、1、4 和7。

### 总结本文介绍了如何使用多源广度优先搜索(BFS)来解决力扣中的矩阵问题。我们通过提供 Java代码示例和详细注释,展示了如何从每个源点出发进行 BFS,更新图中所有顶点的最短距离。

其他信息

其他资源

Top