Kruskal算法求最小生成树(POJ2485)
题目链接:http://poj.org/problem?id=2485
#include <iostream>
#include <stdio.h>
#include <memory.h>
#include <string.h>
#include <stdlib.h> using namespace std; #define inf 100000000
#define N 505
#define M N*N struct note {
int u,v;
int c;
note() {}
note(int u,int v,int c):u(u),v(v),c(c) {}
} p[M]; int e,n,m;
int father[N]; ///表示x的父亲的编号 void addnote(int u,int v,int c) {
p[e++]=note(u,v,c);
} int cmp(const void *a,const void *b) {
note *aa=(note *)a;
note *bb=(note *)b;
return aa->c-bb->c;
} ///初始化每个节点的祖先,即为独立的点
void set_clear() {
for(int i=; i<=n; i++)
father[i]=i;
} ///找到x的祖先。
int find(int x) {
if(x!=father[x])
father[x]=find(father[x]);
return father[x];
} int kruskal(int n) {
set_clear();
int m=; ///只要找n-1条边,就把图构成了
int ans=;
for(int i=; i<e; i++) {
int x=find(p[i].u);
int y=find(p[i].v);
if(x==y) continue; m++;
ans=p[i].c;
father[y]=x; ///father[y]的祖先改为x;合并两个不相交的集合
if(m==n-) break;
}
if(m<n-) return -;
else return ans;
} int main() {
int T;
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
e=; ///边的个数
for(int i=; i<=n; i++) {
for(int j=; j<=n; j++) {
int c;
scanf("%d",&c);
addnote(i,j,c);
}
}
qsort(p,e,sizeof(p[]),cmp);
printf("%d\n",kruskal(n));
}
return ;
}
Kruskal算法求最小生成树(POJ2485)的更多相关文章
- 利用Kruskal算法求最小生成树解决聪明的猴子问题 -- 数据结构
题目:聪明的猴子 链接:https://ac.nowcoder.com/acm/problem/19964 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个 ...
- 克鲁斯卡尔(Kruskal)算法求最小生成树
/* *Kruskal算法求MST */ #include <iostream> #include <cstdio> #include <cstring> #inc ...
- Prim算法和Kruskal算法求最小生成树
Prim算法 连通分量是指图的一个子图,子图中任意两个顶点之间都是可达的.最小生成树是连通图的一个连通分量,且所有边的权值和最小. 最小生成树中,一个顶点最多与两个顶点邻接:若连通图有n个顶点,则最小 ...
- kruskal算法求最小生成树(jungle roads的kruskal解法)
注意: 注意数组越界问题(提交出现runtimeError代表数组越界) 刚开始提交的时候,边集中边的数目和点集中点的数目用的同一个宏定义,但是宏定义是按照点的最大数定义的,所以提交的时候出现了数组越 ...
- Prime算法 与 Kruskal算法求最小生成树模板
算法原理参考链接 ==> UESTC算法讲堂——最小生成树 关于两种算法的复杂度分析 ==> http://blog.csdn.net/haskei/article/details/531 ...
- Kruskal算法求最小生成树
Kruskal算法是根据权来筛选节点,也是采用贪心算法. /// Kruskal ///初始化每个节点为独立的点,他的祖先为自己本身 void made(int n) { ; i<=n; i++ ...
- 859. Kruskal算法求最小生成树(模板)
给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给定一张边带权的无向图G=(V, E),其中V表示 ...
- Kruskal算法求最小生成树 笔记与思路整理
整理一下前一段时间的最小生成树的算法.(其实是刚弄明白 Kruskal其实算是一种贪心算法.先将边按权值排序,每次选一条没选过的权值最小边加入树,若加入后成环就跳过. 先贴张图做个示例. (可视化均来 ...
- AcWing 859. Kruskal算法求最小生成树 稠密图
//稠密图 #include <cstring> #include <iostream> #include <algorithm> using namespace ...
随机推荐
- TCP/IP、Http、Https、Socket的区别
网络由下往上分为物理层.数据链路层.网络层( IP协议).传输层( TCP协议).会话层.表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IP.Http.Socket的区别 TCP ...
- ubuntu简单的小命令
1. gnome-system-monitor,用作調处系统管理窗口,方便结束相关程序. 2. sudo python setup.py install,用作对.py文件的安装,但注意要先cd /ho ...
- thinkPHP 模板操作
1.assign赋值 $this->assign('title','模板操作'); $this->assign('bests',$bests);//$bests是二维数组 2.变量的输出 ...
- vue入门----------路由配置
在使用脚手架搭建好项目后要配置路由 1.首先要安装vue-router,你可以在项目的package.json文件中的dependencies项目中添加"vue-route": & ...
- red5服务器基础之red5环境的安装配置
red5的官网地址http://red5.org/ 下载完成之后解压 在系统变量配置RED5_HOME 在浏览器里输入 http://localhost:5080/ 配置ip地址在安装目录D:\red ...
- [转]使用 YCombo 做 JS /CSS开发 合并 压缩
本文转自:http://www.neoease.com/minimize-javascript-files-using-ycombo/ 前文已介绍过 YCombo 及相关的 CSS 和 JS 合并工具 ...
- netbeans 窗体字体大小设置
当计算机分辨率变大的时候,打开netbeans的时候,字体就会变得越来越小 看起来很不爽,所要就要改变一下,窗体字体大小. 在网上找到了一段修改netbeans窗体字体大小的配置信息,现标记起来,以便 ...
- Murano Weekly Meeting 2015.09.01
Meeting time: 2015.September.1st 1:00~2:00 Chairperson: Nikolay Starodubtsev, from Mirantis Meeting ...
- Murano Service Architecture Introducation
1. Murano Project Mission From the third-party tool developer’s perspective, the application catalog ...
- CSS选择器笔记,element element和element > element 的区别
看官方解释 element element 例子: div p 官方解释:div内部所有的p元素 就是说 只要p在div内部.如果 p在span内部,span在div内部,p也算在div内部 < ...