牛站(矩阵乘法,类floyd:边数限制的最短路问题)

阅读: 评论:0

牛站(矩阵乘法,类floyd:边数限制的最短路问题)

牛站(矩阵乘法,类floyd:边数限制的最短路问题)

给定一张由T条边构成的无向图,点的编号为1~1000之间的整数。

求从起点S到终点E恰好经过N条边(可以重复经过)的最短路。

注意: 数据保证一定有解。

输入格式

第1行:包含四个整数N,T,S,E。

第2..T+1行:每行包含三个整数,描述一条边的边长以及构成边的两个点的编号。

输出格式

输出一个整数,表示最短路的长度。

数据范围

2≤T≤100,
2≤N≤10^6

输入样例:

2 6 6 4
11 4 6
4 4 8
8 4 9
6 6 8
2 6 9
3 8 9

输出样例:

10

思路:这道题在最短路的基础上多了边数的限制,求:从起点S到终点E恰好经过N条边(可以重复经过)的最短路。

回忆一下,floyd是每次用a->b,b->c去更新a->c,以此类推就可以更新出所有点之间的最短路,但无法记录边数,因为每次更新的是自身数组,更新的过程中没有记录,不可查询之前的记录。

这里用类folyd的做法,用矩阵相乘,每次定义一个tenp数组,每次用两个矩阵(图的两个状态a,b)相乘去更新temp,然后再将当前temp的值复制给ans, ans[i][j]即表示从i到j恰好经过n条边的最短路。因为每次更新的是temp,而a就是上一次更新的结果,这样我们更新出a->c这个结

本文发布于:2024-01-28 13:19:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064191747701.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:乘法   矩阵   牛站   floyd
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23