题意:求一块空地i,使所有从俱乐部到i所翻越的城墙数最少。构图:区域作为结点,两区域相邻,则用边连,构造图。最少翻越城墙的数目,即图论中最短路问题。构图,即找出结点与结点间的相邻关系,即哪区域之间是用城墙隔开的。方法如下:由于任何城墙只可能隔开两个区域,即任一城墙只可以出现在两块空地里,记录城墙出现的次数,记录两次则让两区域相邻。复杂度O(MN)。因为俱乐部成员是在城市里,可以选择从城市周围的任一区域出发,所以要记录城市与哪些区域相连,计算路径时要选择相邻区域中到目的地的最短距离为俱乐部成员到目的地的最短距离。算法过程:(1)构造无向图。(2)用Floyd算法求出任意两点间的最短路径。(3)搜索每个区域,求俱乐部成员到该区域的距离和的最小值,即为结果。
posted on 2010-05-09 23:52 David Liu 阅读(411) 评论(0) 编辑 收藏 引用 所属分类: 图论
Powered by: C++博客 Copyright © David Liu