MST——Kruskal

来源:互联网 发布:xp电脑连接网络打印机 编辑:程序博客网 时间:2024/05/17 02:57

最小生成树的另一个算法,需要用到sort排序,而且这个sort有点儿绕。而且需要检测连通的话需要多一些操作。

const int maxn = 110;const int maxm = 10010;const int max_int = ~(1<<31);const int min_int = (1<<31);int p[maxn];int u[maxm], v[maxm], w[maxm], r[maxm];//[0,max_int]int find(int x){return x == p[x] ? p[x] : p[x] = find(p[x]);}bool cmp(int x, int y){return w[x] < w[y];}int kruskal(int n, int m){int cnt = 0;for(int i = 0; i < n; ++i)p[i] = i;for(int i = 0; i < m; ++i)r[i] = i;sort(r, r+m, cmp);for(int i = 0; i < m; ++i){int e = r[i], x = find(u[e]), y = find(v[e]);if(x != y){cnt += w[e];p[x] = y;}}return cnt;}


0 0
原创粉丝点击