博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1125-Stockbroker Grapevine Floyd算法多源最短路径
阅读量:5031 次
发布时间:2019-06-12

本文共 1812 字,大约阅读时间需要 6 分钟。

这题的思路还是比较简单,用弗洛伊德算法打表后,枚举来找到最小值

代码如下 注意最后判断时候的语句 在这里错误了很多次

# include
# include
using namespace std;int p[105][105];const int INF = 99999999;int n;void floyd(){ for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) p[i][j] = min(p[i][j],p[i][k]+p[k][j]);}int main(){ int m, e, t; while (cin >> n) { if (n == 0) break; for (int i = 1; i <= n; i++) for (int k = 1; k <= n; k++) { if (i == k) p[i][k] = 0; else p[i][k] = INF; } for (int i = 1; i <= n; i++) { cin >> m; if (m) { for (int k = 1; k <= m; k++) { cin >> e >> t; p[i][e] = t; } } } floyd(); int mymin = INF; bool flag = false; int s,j; for (int i = 1; i <= n; i++) { int mymax = -INF;//注意这个初始化写在循环里 for ( j = 1; j <= n; j++) { if (i != j) { if (p[i][j] == INF) break; mymax = max(mymax, p[i][j]); } } if (j == n + 1) flag = true; else continue; if (mymin > mymax) { mymin = mymax; s = i; } //上面这一部分的判断条件要想清楚 } if (flag) cout << s << " " << mymin << endl; else cout << "disjoint" << endl; } return 0;}

 

转载于:https://www.cnblogs.com/digitalhermit/p/5124055.html

你可能感兴趣的文章
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>