码迷,mamicode.com
首页 > 其他好文 > 详细

繁繁的游戏 Floyd

时间:2019-11-05 17:15:36      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:最长路   接下来   小伙伴   不能   编号   之间   最大   否则   输出   

繁繁的游戏 Floyd

繁繁想和小伙伴们打游戏,游戏在一个山庄进行,这个山庄有N座山,编号为\(1\)\(N\),为了方便大 家在不同的山之间移动,繁繁建了一些桥,由于技术的原因,桥连接的两座山的高度差不能超过\(d\),现在已知这些桥,求这个山庄最高的山和最低的山差距最大是多少?

输入格式

第一个一个数T,表示测试数据数量(T<=5,2<=N<=50,0<=d<=1000) 每组数据第一行两个数N和d 接下来一个N行N列的矩阵,第i行j列为Y表示i和j之间建了一座桥,否则表示没有建 保证第i行j列和第j行i列值相同,并且第i行第i列值为N

输出格式 T行,每行一个答案,若最大值可能为正无穷,输出-1

考虑无环,即求最长链;有环,因为要满足不等式关系,所以环内求最短路,环外求最长路

又发现\(n\)极小,考虑Floyd,跑完Floyd最短路,\(n^2\)遍历两点距离求最大即可实现环内求最短路,环外求最长路。

另外注意一点,\(dis[x][x]=0\),否则会WA

很像另一道题GF和猫咪的玩具

繁繁的游戏 Floyd

标签:最长路   接下来   小伙伴   不能   编号   之间   最大   否则   输出   

原文地址:https://www.cnblogs.com/santiego/p/11799235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!