dis数组含义:dis[i]表示源点到点i的最短路径 第二题可以使用bellman-ford算法先求的dis,然后对dis数组元素进行判断,来推断是否可以从这个点到达所有的点,如果可以到达;则对权值取相反数,然后按照第一步的思路求最短路径,此时的最短路径的相反数就是原题的最大路径? 想问一下这个思路是否是正确的? 如果源输入当中本身就存在负的权值这个结论应该也是成立的吧 我贴一下求单源最短路径的bellman ford算法的goalng实现 func findShortestPath( n int , m int , graph [][]int ) int { // 由于我们求得是 1->n 的最短路径 dis := make([]int, n) // 我们初始化 dis的 dis[0] = 0 // write code here for i:=0; i<n; i++{ dis[i] = 1000*(n-1) } dis[0] = 0 // 然后我们开始v-1次松弛操作 for i:=0; i< n-1; i++{ for j:=0; j<m; j++{ if dis[graph[j][0]-1]+graph[j][2] < dis[graph[j][1]-1] { dis[graph[j][1]-1] = dis[graph[j][0]-1]+graph[j][2] } } } // after before operations return dis[n-1] } 改成最大路径 修改部分1: if dis[graph[j][0]-1]+graph[j][2]*(-1) < dis[graph[j][1]-1] dis[graph[j][1]-1] = dis[graph[j][0]-1]+graph[j][2]*(-1) 修改部分2:return dis[n-1]*(-1)
点赞 评论

相关推荐

牛客773130651号:巨佬,简历模板换成上下的,左右的很烦,hr看着不爽。。。科大随便乱杀,建议能保研就保研,不行也得考一下 ,985硕去干算法,比开发强多了。开发许多双非都能搞,学历优势用不上,算法有门槛
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务