最小生成树题集

来源:互联网 发布:北京大学远程网络教育 编辑:程序博客网 时间:2024/06/07 08:29

A题,L题:poj2421 简单题
题意:题目这么长,其实大部分都在扯逼-_-。以字母代替点,每行输入字母,与其相连的个数,以及相连的具体点和其距离,计算全联通最小距离。
题解:只需要把字母距离化为可用的每两点距离,或邻接矩阵即可。注意:并查集初始化别和输入一起了,因为输入只有n-1次,我就少初始化了wa了一次。不知道在L题能A的情况下A题runtime error了。。。

B题 poj1287 简单题
题意:求最小生成树,也就是遍及整个网络的最小距离。
题解:其实与K题基本相似,水题,无话可讲。

C题 poj2031 简单题
题意:给出n个球体的球心坐标和半径,可以在两个球体的表面连一条通路,代价为距离. 求使得所有球体联通的最小花费.
题解:注意两点之间的距离为 (球心距 - 半径和); 若这个式子小于0,则距离为0.
我G++交wa了,c++交过了…

D题:poj2421 简单题
题意:有N个城市,让城市全联通的最小距离,但是有已经建好的道路。
题解:这样将建好的道路路径改为0,计算最短路肯定会算上这一条。

E题:poj1789 中等题
题意较难。。。作为渣渣看了好久。
题意:用一个字符串代表一个编号,这两个编号之间不同字母的个数代表两个编号之间的距离,Q为连接所有点的最短距离。求1/Q。
题解:预处理下距离,化为可用的每两点距离,或邻接矩阵即可。

F 题:poj2349 中等题
题意:有S颗卫星和P个哨所,有卫星的两个哨所之间可以任意通信;一个哨所只能和距离它小于等于D的哨所通信。给出卫星的数量和P个哨所的坐标,求D的最小值。
题解:既然两个有卫星的哨所可以任意通信,那么我们可以把最大的几条边作为任意通信边,可以减小D的大小,也就求最小生成树的第s大的边长。我们只需记入边长,排序输出即可。

G题:poj1751 简单题
题意:给出点坐标。
题解:跟D题类似,但是需要举出具体最小生成树边,用pre记录下即可。

H题:poj1258 简单题
题意:农民需要所有农村的联通更加快速,为了花费最小,他们想要连一条需要最小光纤长度的路径。两个农村距离不超过100000。
题解:已经给出邻接矩阵图,我们只需要用prim直接解决,或者用一个边数组存储所有边,用kruskal解决。

I题:poj3026 较难题
题意:给你一个图,搜索的开始时,该组可能会分裂在两个或更多组,问整个组寻找玩所有Alice要多少步数。
题解:如果直接用DFS算,中间未分开的步数重复计算。需要用BFS先计算A与S到空点的距离,然后用最小生成树解决,挺难写,我还没过呢,思路是对的。

J题:poj1679 较难题
题意:最小生成树是否唯一。
题解:我想在寻找最小边和松弛操作的时候比较是否相等,若有相等说明不止一条吧,但我想如果其第一条边不同,但下面相加的总和相等是否会有可能,先按这思路先写下。

K题:hdu1233 简单题
题意:列出了任意两村庄间的距离,目标是使任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。
题解:已经给出了各个边的权值,直接用kruskal解决,或化成邻接矩阵用prim解决。

M题:hdu1875 中等题
题意:要求在多个岛之间建桥,并实现全畅通。但是有限制桥的长度是10<=x<=1000,桥价格为100元/米。给你小岛坐标,若无法全畅通输出“oh!”,否则输出最小花费。
题解:先预处理各点距离,存入数组用kruskal做,或化邻接矩阵用prim做,但是这里衍生出另一个问题,如何判断无法全畅通,我想只需要记录连接的点的个数,没办法连完n个的即无法全畅通。注意:桥长限制,和浮点化。这里桥长限制最好在预处理的时候就考虑好,
我在第一次做时候,放里面判断,应该会导致dis数组出错。

1 0
原创粉丝点击