floyd模板
模板 Floyd
2023-09-27 14:19:57 时间
初始化:
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
if (i == j) d[i][j] = 0;
else d[i][j] = INF;
// 算法结束后,d[a][b]表示a到b的最短距离
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]);
}
例题:
4074. 铁路与公路
import java.util.*;
public class Main {
static int INF = 0x3f3f3f3f;
static int N = 405;
static int n,m;
static int floyd(int f[][]) {
if(f[1][n] != INF) return f[1][n];
for(int k = 1; k <= n; k ++ ) {
for(int i = 1; i <= n; i ++ ) {
for(int j = 1; j <= n; j ++ ) {
f[i][j] = Math.min(f[i][j], f[i][k] + f[k][j]);
}
}
}
return f[1][n];
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int f[][] = new int [N][N];
int g[][] = new int [N][N];
n = sc.nextInt();
m = sc.nextInt();
for(int[] t:f) Arrays.fill(t, INF);
for(int[] t:g) Arrays.fill(t, INF);
for(int i = 0; i < m; i ++ ) {
int a = sc.nextInt();
int b = sc.nextInt();
f[a][b] = 1;
f[b][a] = 1;
}
for(int i = 1; i <= n; i ++ ) {
for(int j = 1; j <= n; j ++ ) {
if(f[i][j] == INF && i != j) {
g[i][j] = 1;
}
}
}
int res = Math.max(floyd(f),floyd(g));
if(res != INF)
System.out.println(res);
else
System.out.println(-1);
sc.close();
}
}
相关文章
- 吃透8图1模板,人人可以做架构
- 阅读开源代码时:idea中如何使用todo标记、活动模板 (史上最全)
- POJ2446 模板盖格子 简单二分匹配
- 软件测试计划包括哪些内容,测试计划如何编写。分享测试计划模板
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- iview自定义列模板-手动实现可编辑表格
- 10Vue - 模板语法(插值-纯HTML)
- Idea Live Templates代码模板
- 纪念逝去的岁月——C++实现一个队列(使用类模板)
- 《深入理解Elasticsearch(原书第2版)》——2.3 查询模板
- CMS模板引擎:XHtmlAction
- 2、ES6结构赋值和模板字符串
- 接口测试用例模板
- Django之模板继承(十四)
- C# 清单模板导入 根据Excel生成树