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

floyd模板

B3647 【模板】Floyd - 洛谷

f l o y d floyd floyd 模板

对于 f l o y d floyd floyd 算法来说时间复杂度为 O ( n 3 ) O(n^3) O(n3) ,不如跑 n n n h e a p _ d i j k s t r a heap\_dijkstra heap_dijkstra 算法

题目大意:

给出一张由 n n n 个点 m m m 条边组成的无向图,求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径

思路:

D [ k , i , j ] D[k,i,j] D[k,i,j] 表示经过若干个不超过 k k k 的节点,从 i i i j j j 的最短路径

考虑转移可由 状态为 k − 1 k-1 k1 的节点,从 i i i k k k ,再到 j j j

k k k 是阶段,置于外循环,每次都尝试用 k k k 更新 i i i j j j 即可

for(int k=1;k<=n;k++){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
            d[i][j]=max(d[i][j],d[i][k]+d[k][j]);
        }
	}
}

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define PII pair<int,int>
#define lowbit(x) x&-x
#define ALL(x) x.begin(),x.end()

const int mod = 1e9 + 7;
const int N = 1e3+10;

int n,m;
int d[N][N];

void floyd() {
	for(int k=1;k<=n;k++) {
		for(int i=1;i<=n;i++) {
			for(int j=1;j<=n;j++) {
				d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
			}
		}
	}
}

void solve() {
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			d[i][j]=1e18;
			if(i==j){
				d[i][j]=0;
			}
		}
	}
	for(int i=1;i<=m;i++){
		int u,v,x;cin>>u>>v>>x;
		d[u][v]=min(d[u][v],x);
		d[v][u]=min(d[v][u],x);
	}
	floyd();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<d[i][j]<<" ";
		}
		cout<<'\n';
	}
	
}

signed main() {
	std::ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int T = 1;
//	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

相关文章:

  • SpringBoot无法访问静态资源文件CSS、Js问题
  • 未来 AI 发展趋势与挑战(AGI、数据安全、监管政策)
  • 2025 年 AI 编程新风向:从智能辅助到自主开发的跨越
  • 机器学习的下一个前沿是因果关系吗?
  • nginx介绍和几种安装方法
  • MCP协议介绍
  • Leetcode hot100 (day 8,9)
  • k8s node inode被耗尽如何处理?
  • 解决前后端时区不一致问题
  • Redis与Mysql双写一致性如何保证?
  • 图灵逆向——题十-魔改算法
  • Tigshop| 一个基于Java的开源商城系统
  • C++初级入门学习
  • Android里面如何优化xml布局
  • 应急物资仓库管理系统|基于GAV仓库管理的应用
  • 美*WMS项目总结
  • ​如何判断安捷伦气质联用仪GCMS 8890-5977B 四级杆是否需要更换​
  • Linux——进程概念
  • RTK 实时动态定位概述
  • Java 中 SQL 注入问题剖析​
  • 青海网站建设价格低/网络推广接单平台
  • 深圳宝安区有什么好玩的地方/优化百度搜索
  • 网站风格主要包括/网站seo谷歌
  • 建立一个网站的费用/腾讯广告
  • 晋中路桥建设集团网站/最新疫情最新消息
  • 动漫制作专业软件有哪些/seo和sem的区别与联系