zoukankan
html css js c++ java
HDU2833 WuKong Floyd
/* Floyd的应用 用Floyd求出任意两点间的最短路径 两个定理: 1.所求的路径一定是一断连续的路径 2.如果路径(x,y)是a->b的最短路径中的一段,则min(a,b) = min(a,x) + min(x,y) + min(y,b) 最后只需找到同时在两条最短路径上,且距离最长的那一段 */ #include <iostream> using namespace std; const int inf=200000000; int s[305][305];//记录最短路的长度 int num[305][305];//同样长度的最短路的最长的跳数 int main() { int n, m, i, j, k, a, b, c, d, ans, start, end, dis; while(scanf("%d%d", &n, &m), m || n) { memset(num, 0, sizeof(num)); for(i = 0; i <= n; i++) { for(j = 0; j <= n; j++) s[i][j]=(i==j)?0:inf; } for(i = 0; i < m; i++) { scanf("%d%d%d", &start, &end, &dis); if(s[start][end] < dis) continue; s[start][end] = dis; s[end][start] = dis; num[start][end] = 1; num[end][start] = 1; } for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(s[i][j]>s[i][k]+s[k][j]) { s[i][j]=s[i][k]+s[k][j]; num[i][j] = num[i][k] + num[k][j]; } else if (s[i][j] == s[i][k] + s[k][j] && num[i][j] < num[i][k] + num[k][j]) num[i][j] = num[i][k] + num[k][j]; } } } scanf("%d%d%d%d", &a, &b, &c, &d); ans = -1; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { if(num[i][j] > ans && (s[a][b] == s[a][i] + s[i][j] + s[j][b]) && (s[c][d] == s[c][i] + s[i][j] + s[j][d])) ans = num[i][j]; } } printf("%d\n", ans + 1); } return 0; }
查看全文
相关阅读:
理解js中的原型链,prototype与__proto__的关系
Zepto源码(2016)——Zepto模块(核心模块)
MySQL增删改查
ACM典型试题--古代密码(二)
ACM典型试题--简单的加密算法(一)
MySQL图文安装配置
(c语言)二叉树中序线索(数据结构十七)
(C语言)二叉树层次遍历(数据结构十六)
Java连接db2数据库(常用数据库连接五)
java连接oracle数据库(常用数据库连接四)
原文地址:https://www.cnblogs.com/windmissing/p/2559880.html
最新文章
NOIP201302表达式求值
NOIP201105铺地毯
NOIP201208同余方程
NOIP200505谁拿了最多的奖学金
挡板测试
动态库和静态库的优缺点
Linux下常用的命令
tomcat加载web项目报错:bad major version at offset=6
eclipse中查找某一个字符串
如何通过class文件来查看java的版本
热门文章
Windows下war包部署到Linux下Tomcat出现的问题
spring+mybatis+mina+logback框架搭建
JavaScript中对数据库表中某一个字段进行赋值
修改别人写的Hibernate数据库操作代码
系列博文-LowPoly风格的图像生成器
按钮组,导航条选中其中一个后添加Class突出元素
最近在公司闲的一米,给自己定一个计划
获取input Date日期 时间,并得到前一天的Date值
bootstrap模态框内容替换时会重新触发模态框?<a>标签到底有哪些特殊的特性呢?
函数调用的几种方法 几种主流框架使用匿名函数模仿块级作用域的方式
Copyright © 2011-2022 走看看