题意:农场上有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 阅读(400) 评论(0) 编辑 收藏 引用 所属分类: 图论
Powered by: C++博客 Copyright © David Liu