热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

过路费【Floyd】

题目大意:思路:emm给你们讲一个故事,FloydFloyd比SPFASPFA快。啥,不信?那就随你喽。某da

题目大意:
这里写图片描述


思路:
emm给你们讲一个故事,FloydFloydSPFASPFA快。

啥,不信?那就随你喽。

某dalao的感人事迹,上面是FloydFloyd,下面是SPFASPFA
这里写图片描述

这道题真的没想到是用FloydFloyd,而且这题卡了我3小时。。。

哇我被Floyd卡了三小时我好菜啊

进入正题。

这道题用FloydFloyd的好处是,FloydFloyd点排序后可以直接一边处理最短路,一边可以处理最短路上点最大值。

所以,我们要先将点按权值从小到大排一次序,那么在num[i]num[i],num[j]num[j],num[k]num[k]中总有一个是最大值。

所以,我们跑一边FloydFloyd,最短路和点权一起处理,就可以求出真正的最短路了。


代码:

#include
#include
#include
#include
using namespace std;int n,m,x,y,z,t,d[501][501],dis[501][501],o[501];
int num[501],ak[501];bool cmp(int x,int y)
{return num[x]}void fre()
{freopen("toll.in","r",stdin);freopen("toll.out","w",stdout);
}int main()
{fre();scanf("%d%d%d",&n,&m,&t);for (int i&#61;1;i<&#61;n;i&#43;&#43;){scanf("%d",&num[i]);ak[i]&#61;i;} memset(d,127/3,sizeof(d));memset(dis,127/3,sizeof(dis)); //初始化for (int i&#61;1;i<&#61;m;i&#43;&#43;){scanf("%d%d%d",&x,&y,&z);d[x][y]&#61;d[y][x]&#61;min(d[x][y],z);} sort(ak&#43;1,ak&#43;1&#43;n,cmp); //按点权排序for (int kk&#61;1;kk<&#61;n;kk&#43;&#43;) //Floyd{int k&#61;ak[kk];for (int i&#61;1;i<&#61;n;i&#43;&#43;){for (int j&#61;1;j<&#61;n;j&#43;&#43;){if (i!&#61;j&&j!&#61;k&&k!&#61;i){d[i][j]&#61;min(d[i][j],d[i][k]&#43;d[k][j]); //求最短路dis[i][j]&#61;min(dis[i][j],d[i][j]&#43;max(num[i],max(num[j],num[k]))); //求加点权的最短路}}}} //初始化结束for (int i&#61;1;i<&#61;t;i&#43;&#43;) //O(1)输出{scanf("%d%d",&x,&y);printf("%d\n",dis[x][y]);}return 0;
}

转:https://www.cnblogs.com/hello-tomorrow/p/9313044.html



推荐阅读
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文介绍了一种在ANSI C中动态分配二维数组的方法。通过创建指针数组并为每个指针分配连续空间,可以灵活地管理内存。文章还讨论了一些常见的错误和注意事项。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 题意:求一个N个点无向图中,其中p个关键点间的最短距离.分析:比较特殊的最短路,方式类似于多源BFS,将所有关键点装入优先队列,状态中需要包含其源点的id.对每条边都要遍历,对每个 ... [详细]
  • 套路题?感觉讲不清,先写建图把每个点拆成两个,A和B,S-Ai流量1费用0,Bi-T流量1费用0ÿ ... [详细]
  • 练习使用DFS搜索12以内的五位数字的排列例如12345123461211109712111098利用数学排列与组合方法可知结果为12 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 题目《BZOJ2654: Tree》的时间限制为30秒,内存限制为512MB。该问题通过结合二分查找和Kruskal算法,提供了一种高效的优化解决方案。具体而言,利用二分查找缩小解的范围,再通过Kruskal算法构建最小生成树,从而在复杂度上实现了显著的优化。此方法不仅提高了算法的效率,还确保了在大规模数据集上的稳定性能。 ... [详细]
  • 本文探讨了基础二分法在数据报告生成中的应用及其优化策略。通过分析二分法在处理大规模数据集时的高效性和准确性,提出了若干改进措施,以提升数据报告的生成速度和质量。具体包括算法的并行化处理、数据预处理技术的应用以及异常值的处理方法,旨在为数据分析师提供更为高效和可靠的工具。 ... [详细]
  • 本报告对2018年湘潭大学程序设计竞赛在牛客网上的时间数据进行了详细分析。通过统计参赛者在各个时间段的活跃情况,揭示了比赛期间的编程频率和时间分布特点。此外,报告还探讨了选手在准备过程中面临的挑战,如保持编程手感、学习逆向工程和PWN技术,以及熟悉Linux环境等。这些发现为未来的竞赛组织和培训提供了 valuable 的参考。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • mybatis 逆向生成后遵循java驼峰法则的解决
    这篇文章主要介绍了mybatis逆向生成后遵循java驼峰法则的解决,具有很好的参考价值,希望对大家有所帮助。一 ... [详细]
author-avatar
雪天使杨果果
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有