hdu 1233 最小生成树kruskal版
来源:互联网 发布:欧文2017数据 编辑:程序博客网 时间:2024/06/05 17:35
kruskal算法就是在并查集基础上加了个贪心,算法正确性的证明看完算法导论自己还不怎么懂,不过感觉写走来比起prim要来得顺手得多
#include<iostream>#include<vector>#include<algorithm>using namespace std;class node{public:int x;int y;int dis;};bool cmp(node& lhs,node& rhs){return lhs.dis < rhs.dis;}int n;vector<node> way;vector<int> father;int find_father(int x){if(x == father[x])return x;else{father[x] = find_father(father[x]);//压缩路径}return father[x];}void merge(int a,int b){father[a] = b;}int Mst_kruskal(){int res = 0;sort(way.begin(),way.end(),cmp);//贪心排序int temp = n*(n-1)/2;for(int i = 0;i <= n;i++){//初始化父结点father.push_back(i);}for(int i = 0;i < temp;i++){int fx = find_father(way[i].x);int fy = find_father(way[i].y);if(fx != fy){res += way[i].dis;merge(fx,fy);}}return res;}int main(){while(scanf("%d",&n)==1 && n){int temp = n*(n-1)/2;for(int i = 0;i < temp;i++){node a;scanf("%d %d %d",&a.x,&a.y,&a.dis);way.push_back(a);}printf("%d\n",Mst_kruskal());way.clear();//注意清空father.clear();}return 0;}
- hdu 1233 最小生成树kruskal版
- HDU-1233(kruskal求最小生成树)
- HDU 1233 prim kruskal最小生成树
- hdu 1233 Kruskal求最小生成树
- 最小生成树(kruskal) hdu 1233
- hdu 1233 最小生成树kruskal
- hdu 1233 还是畅通工程(最小生成树Kruskal)
- HDU 1233 还是畅通工程(最小生成树Kruskal)
- HDU--1233最小生成树之kruskal算法
- HDU 1233 还是畅通工程 (最小生成树 Kruskal)
- HDU 1233 还是畅通工程(最小生成树kruskal)
- hdu 1162 最小生成树(Kruskal)
- HDU 1879 最小生成树 prim + kruskal
- HDU 3371 最小生成树 kruskal
- HDU 4463 Outlets (Kruskal 最小生成树)
- HDU 4786(最小生成树 kruskal)
- hdu 1301(最小生成树kruskal)
- HDU 4750 最小生成树 kruskal
- 消除数据仓库的误区(二)
- C#压缩文件
- Android读写文件
- 简单实用的网游服务器架构
- 线程知识复习整理
- hdu 1233 最小生成树kruskal版
- C# 生成 添加 修改 删除 XML节点操作
- OA软件市场火热选型需理性
- 值类型和引用类型
- 重定向(forward与sendRedirect)区别
- 软件测试基础知识整理一----软件测试的定义
- 计算机视觉领域稍微容易中的期刊
- 软件测试基础知识整理三----白盒测试
- Windows进程间通信之剪切板