Coder Space

PKU 3259 Wormholes --- 带负权边的最短路径(Bellman_Ford算法)

题意:
农场上有N块田地(N < = 500),M条路径(M <= 2500)可以从i到达j花费t单位时间。另外还有W个虫洞(W <= 200),虫洞可以从一块地 i 到达另一块地j并且时间倒退t。注意路径是双向的,虫洞是单向的。现在农夫John希望知道能否从某块地出发并且回到这块地,使得他回来的时间早于出发的时间。

思路:
根据题意,题目其实是要求一个带负权的有向图中是否存在权值为负的回路。经典的Bellman_Ford算法正是算法过程中就要判断这一问题。由于John出发点不确定,一个原始的想法是,枚举起点,复杂度为O(n^4)。另一更好的解法是,假设有一超级源点,到各点的距离为0,那么只需从这个源点出发,判断图中可能出现的负环,即只需设初值d[i] = 0,执行一次Bellman_Ford算法即可。

源代码

posted on 2010-05-25 01:24 David Liu 阅读(387) 评论(0)  编辑 收藏 引用 所属分类: 图论


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿

文章分类

文章档案

搜索

最新评论