最小生成树 kruskal()
2015-09-05 10:07
302 查看
/** kruskal 算法和prim 功能一样,在点多边少的情况下更有优势 用专业的口吻说就是,kruskal 适用于疏密图,prim 适用于稠密图 还是那句话,模板都会用,关键在转换 高中就那点知识,可是得做好多题才能应付高考,知识点都会,关键在 理解题目并转换为学的知识点 */ #include <algorithm> using namespace std; int path ; struct data { int u, v, w; }edge[M]; //M条边 int n, m; // n, m为题目中实际的点个数和边个数 //用sort为边排序 bool cmp(data a, data b) { return a.w < b.w; } //下面这个是判断环用到个啥来着,一下想不起来,ooo 对 并查集 int find(int x) { if (x != path[x]) path[x] = find(path[x]); //不费多少时间的 return path[x]; } int kruskal() { int i, ans = 0; for (i=1; i<=n; i++) path[i] = i; sort(edge, dege+m, cmp); //m 为题中边的数目 for (i=0; i<m; i++) { int x = find(edge[i].v); int y = find(edge[i].u); if (x != y) { path[y] = x; ans += edge[i].w; } } return ans; } int main() { // 点个数为 1 - n 边为 0 - (m-1) kruskal(); return 0; } 收藏于 2012-01-08 来自于百度空间
相关文章推荐
- HDU 3488 KM Tour
- java 自写的计算器
- 抽象类和接口的区别
- ahu727美妙音乐
- Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
- uva 10056 What is the Probability ? 概率是多少
- linux下修改mysql密码
- 绕轴旋转矩阵
- 最小生成树 prim()
- 《胡雪岩·萧瑟洋场》—— 读后总结
- linux-find查询
- 路径中 斜杠/和反斜杠\ 的区别
- 【HDU3488】【匹配】【KM最小费用圈】
- mysql,sql server,oracle 唯一索引字段是否允许出现多个 null 值?
- 腾讯笔试题——腾讯研发工程师B笔试卷
- 过滤器模板
- HDU 1102 Constructing Roads -- prime
- hdu4414 Finding crosses
- 临界区问题的产生
- scikit-learn:matplotlib.pyplot常用画图功能总结(2)——多子图绘制