最小生成树
文章平均质量分 66
GooMaple
这个作者很懒,什么都没留下…
展开
-
UVa 10034 - Freckles
最小生成树,Kruskal算法。代码如下:#include #include #include #include #include #include using namespace std;const int MAXN = 5052;int n, p[MAXN], r[MAXN], u[MAXN], v[MAXN];double dis[MAXN], x[102], y[原创 2012-11-05 22:47:24 · 1161 阅读 · 0 评论 -
UVa 10397 - Connect the Campus
因为已经有部分建筑用电线连起来了,要求还需要多少电线才可以将全部建筑连起来,只需要将用电线连起来的城市之间的距离设为0,再用Kruskal。代码如下:#include #include #include #include #include #include using namespace std;const int DMAXN = 755;const int EMAXN =原创 2012-11-06 19:47:33 · 1082 阅读 · 0 评论 -
UVa 10048 - Audiophobia
模拟kruskal的过程,一条边一条边的加入树中,每加入一次,就判断起点和终点是否在一个集合里, 一旦他们在一个集合里了,那么那条路径中的最大值便是当前加入的这条边的权值,因为加入的边是按照从小到大顺序加入的。代码如下:#include #include #include #include #include #include using namespace std;con原创 2012-11-06 21:16:49 · 1585 阅读 · 0 评论 -
UVa 10608 - Friends
并查集,实际就是统计图中最大连通分支中节点的个数。代码如下:#include #include #include #include #include #include using namespace std;const int MAXN = 30002;int friends[MAXN], p[MAXN];int find(int x){ return p[x原创 2012-11-27 20:44:25 · 1134 阅读 · 0 评论 -
UVa 10099 The Tourist Guide
求两点之间所有路径中最小单元间距的最大值,既可以仿照UVa10048用kruskal最大生成树的原理求,又可以用Floyd算法求。代码如下(Floyd算法):#include #include #include #include #include using namespace std;int vis[101][101];const int INF = 1000003;原创 2012-11-20 20:35:31 · 1050 阅读 · 0 评论 -
UVa 10369 - Arctic Network
有s个卫星,剩下的全用无线装置(求剩下的其无线电点中最大的两个无线电之间的距离),实际就是是求最小生成树中第p-s大的边的长度,模拟kruskal即可,注意其数据量是1000,而不是100。代码如下:#include #include #include #include #include #include using namespace std;const int MA原创 2012-11-21 21:52:11 · 933 阅读 · 0 评论