
最小生成树
文章平均质量分 61
kaiweisun
这个作者很懒,什么都没留下…
展开
-
poj 1251
在n个城市之间铺设光缆,铺设光缆费用很高且各个城市之间铺设光缆的费用不同。如果设计目标是使这n个城市之间的任意两个城市都可以直接或间接通信,并且要使铺设光缆的费用最低,这样的问题就是一个求最小生成树的问题。解决这个问题的方法就是在有n个城市结点、n(n-1)/2条费用不同的边构成的无向连通图中找出最小生成树。 最小生成树的应用相当广泛,是图论中比较基础的算法。解决最小生成树有两种算...原创 2011-09-27 00:52:11 · 285 阅读 · 0 评论 -
poj 1258
题意:Farmer John有当选为新镇长,他的竞选宣言就是把网络带入所有的farm。现在给出farm的个数n,以及每两个farm之间的联网距离,让你找出一条最短的路径能连接上所有的farm。 思路:基础的prim。首先就是邻接矩阵的构造,时间复杂度为o(n^2)。poj第200道,贡献给了prim求最短路径。 #include<iostream>u...原创 2011-09-27 10:18:28 · 90 阅读 · 0 评论 -
poj 1789
题意:历史上,曾用7个小写字母来表示每种truck的型号,每两种型号之间的差距为字母串中不同字母的个数。现在给出n种不同型号的truck,问怎样使1/Σ(to,td)d(to,td)的值最小。(即找到一条连接所有truck的最短路径。典型的最小生成树的问题, discuss里说,Prim算法适合稠密图,Kruskal算法适合稀疏图,可以使用prim和kruskal两种方法。该题是稠密的图。求最...原创 2011-09-27 15:43:23 · 164 阅读 · 0 评论 -
poj 2485
题意很简单,给你一个用邻接矩阵形式存储的有n个顶点的无向图,让你求它的最小生成树并求出在这个生成树里面最大的边的权值。思路:最小生成树算法:代码如下:#include <iostream>using namespace std;const int Max=502;const int inf=0xfffffff;int n,ans;int map[Ma...原创 2011-09-27 16:35:55 · 105 阅读 · 0 评论 -
poj 1251第二种解法
kruskal思想: 对图G的所有边按权值从小到大排序,每次取一条边,若此边的两个结点属于同一个连通分量,则舍弃这条边;若不属于同一个连通分量,则将这条边加入到最小生成树中。当所有结点属于同一个连通分量时,构造完毕。 kruskal设计: 一个边的结构体。有几个关键问题: 如何判断两个结点是否属于一个连通分量: 每个连通分量都用其中一个结点来标识,p[]数...原创 2011-09-27 20:14:02 · 129 阅读 · 0 评论