当前位置: 首页 > wzjs >正文

营销网站的概念怎样建设VR网站

营销网站的概念,怎样建设VR网站,专业免费网站建设一般多少钱,wordpress去除作者信息图论算法实践:使用 Floyd 求任意两点最短路(Java 实现) 在图论算法中,Floyd-Warshall 算法是一个经典的动态规划算法,用于在一个加权图中寻找所有点对之间的最短路径。 场景描述 假设我们有一个包含 n 个点的无向图&…

图论算法实践:使用 Floyd 求任意两点最短路(Java 实现)

在图论算法中,Floyd-Warshall 算法是一个经典的动态规划算法,用于在一个加权图中寻找所有点对之间的最短路径


场景描述

假设我们有一个包含 n 个点的无向图,图中有 m 条边,每条边连接两个点并带有一定的权重。我们还需要回答 q 个询问,每个询问是从点 x 到点 y 的最短路径长度。如果两点之间不可达,输出 -1


解决方案:Floyd-Warshall 算法

Floyd-Warshall 是一个三重循环的动态规划算法,时间复杂度为 O(n^3),适用于点数较少的图。

核心思想

我们维护一个 dist[i][j] 数组,表示从点 i 到点 j 的最短路径长度。初始时,dist[i][j] 设为边权(或正无穷),然后不断尝试通过中转点 k 来优化从 ij 的路径。


Java 实现代码

// 包名可自定义
package ff;import java.io.*;
import java.util.*;public class Main {static FastRead in = new FastRead();static PrintWriter out = new PrintWriter(System.out);public static void main(String[] args) {int n = in.nextInt();  // 点数int m = in.nextInt();  // 边数int q = in.nextInt();  // 查询数long[][] dist = new long[n + 1][n + 1];// 初始化邻接矩阵for (int i = 1; i <= n; i++) {Arrays.fill(dist[i], Long.MAX_VALUE);dist[i][i] = 0;  // 自己到自己距离为0}// 读入边并更新最短路径(无向图)while (m-- > 0) {int u = in.nextInt();int v = in.nextInt();long w = in.nextLong();dist[u][v] = Math.min(dist[u][v], w);dist[v][u] = Math.min(dist[v][u], w);}// 核心算法:Floyd-Warshall 三重循环for (int k = 1; k <= n; k++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (dist[i][k] != Long.MAX_VALUE && dist[k][j] != Long.MAX_VALUE) {dist[i][j] = Math.min(dist[i][j], dist[i][k] + dist[k][j]);}}}}// 处理查询while (q-- > 0) {int x = in.nextInt();int y = in.nextInt();out.println(dist[x][y] != Long.MAX_VALUE ? dist[x][y] : -1);}out.flush();out.close();}
}

辅助类 FastRead

为了提升输入效率,使用了封装的快速读入类:

class FastRead {StringTokenizer st;BufferedReader br;public FastRead() {br = new BufferedReader(new InputStreamReader(System.in));}String next() {while (st == null || !st.hasMoreElements()) {try {st = new StringTokenizer(br.readLine());} catch (IOException e) {e.printStackTrace();}}return st.nextToken();}int nextInt() {return Integer.parseInt(next());}double nextDouble() {return Double.parseDouble(next());}long nextLong() {return Long.parseLong(next());}String nextLine() {String str = null;try {str = br.readLine();} catch (IOException e) {e.printStackTrace();}return str;}
}

示例输入输出说明

假设输入为:

4 5 3
1 2 3
2 3 4
3 4 5
4 1 2
1 3 10
1 3
2 4
1 4

输出应为:

7
9
2

注意事项

  • 边可能有重边,需取最小值处理。

  • 初始化时要小心:dist[i][j] = Long.MAX_VALUE 会导致溢出问题,必须判断是否为 MAX_VALUE 再加法。

  • 点编号从 1 开始,数组大小应为 n + 1


总结

Floyd-Warshall 是处理稠密图、所有点对路径问题的强力工具,使用简单,效率可接受。


如果你喜欢这样的算法详解,也欢迎点赞、收藏或留言交流!


文章转载自:

http://lFyWqlcJ.pkhbw.cn
http://RTln48jJ.pkhbw.cn
http://SwIa2XRW.pkhbw.cn
http://d581VQBn.pkhbw.cn
http://1NRDkVs3.pkhbw.cn
http://iMlprjTB.pkhbw.cn
http://GL79GQVH.pkhbw.cn
http://tMPQw2sS.pkhbw.cn
http://WVJLx6QS.pkhbw.cn
http://OHdkNmpO.pkhbw.cn
http://8QtGmE8x.pkhbw.cn
http://qT0VBfVt.pkhbw.cn
http://zvoedcWK.pkhbw.cn
http://HYLnZTqc.pkhbw.cn
http://m0dnbCNN.pkhbw.cn
http://FTAcOrKf.pkhbw.cn
http://tIoV3L6E.pkhbw.cn
http://bGmD0eS5.pkhbw.cn
http://35mtbMZ3.pkhbw.cn
http://kuB6BtbO.pkhbw.cn
http://wWzLs2YO.pkhbw.cn
http://jypssOSJ.pkhbw.cn
http://U0dokMBs.pkhbw.cn
http://zaVyB3si.pkhbw.cn
http://d9kWiPoX.pkhbw.cn
http://XF3HIcoa.pkhbw.cn
http://FDyE6oPj.pkhbw.cn
http://lu73xjEA.pkhbw.cn
http://Npz5MAAt.pkhbw.cn
http://ViTvuz3g.pkhbw.cn
http://www.dtcms.com/wzjs/760471.html

相关文章:

  • 电子图书网站开发的目的网站开发线上
  • 介绍自己的做的网站做直播网站需要那些技术
  • 古风网站的关于我们页面怎么做正邦集团招聘
  • 做视频怎么去除网站网站建设流程哪家好
  • 才艺多网站建设平台大学生做网站赚钱
  • 南昌网站网站建设天津建设厅网站首页
  • 常用网站建设软件有哪些如何验证网站
  • 亚当学院网站建设视频教程什么软件制作网站快
  • 网站的客户体验服务好 售后好的网站制作
  • 腾讯 网站开发企业在哪里查询
  • 网站在线支付方案wordpress 站中站
  • windows2008 iis 网站南通江苏网站建设
  • 长沙产品网站建设网站建设毕业设计刻光盘
  • 网站页面 原则扬州市建筑信息平台
  • 伍佰亿网站建设网站开发兼容问题
  • wordpress子站点解析939网站建设
  • 网页制作网站制作广告设计公司简介内容
  • 一起做业官方网站深圳网站建设有市场吗
  • 哪一些网站使用vue做的wordpress仿36kr氪主题
  • 邢台建设网站公司泗水县最新消息
  • 建个公司网站需要多少钱python做网站多少钱
  • 防蚊手环移动网站建设网站做外链的好处
  • 南昌做公司网站开个网络公司要多少钱
  • 给我一个网站图片商务平台搭建
  • 部署php网站南京企业网站搭建
  • 网站维护中wordpress 改中文
  • 做网站 图文教程关键词查询工具软件
  • 图片搜索seo外贸网站制作
  • 利用业务时间做的网站与公司有关吗做dj网站用什么建站系统比较好
  • 推广做网站电话政务微信小程序