
最小生成树
文章平均质量分 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 · 1220 阅读 · 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 · 1131 阅读 · 0 评论 -
UVa 10048 - Audiophobia
模拟kruskal的过程,一条边一条边的加入树中,每加入一次,就判断起点和终点是否在一个集合里, 一旦他们在一个集合里了,那么那条路径中的最大值便是当前加入的这条边的权值,因为加入的边是按照从小到大顺序加入的。 代码如下: #include #include #include #include #include #include using namespace std; con原创 2012-11-06 21:16:49 · 1634 阅读 · 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 · 1179 阅读 · 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 · 1091 阅读 · 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 · 977 阅读 · 0 评论