2017-09-18 21:53:00

writer:pprp

代码如下:

/*
@theme: kruskal
@writer:pprp
@date:2017/8/19
@begin:21:19
@end:21:50
@declare:
*/ #include <bits/stdc++.h> using namespace std;
const int maxn = ;
const int INF = ;
int n , e;
struct node
{
int x, y, w;
};
vector<node> vt;
int dad[maxn];//每个结点的父亲集合 bool cmp(const node& n1, const node& n2)
{
return n1.w < n2.w;
} int getfather(int x)
{
if(x == dad[x])
return x;
dad[x] = getfather(dad[x]);
return dad[x];
} void kruskal()
{
for(int i = ; i <= n ;i++)
dad[i] = i;
int cnt = , ans = ;
for(int i = ; i <= e ;i++)
{
if(getfather(vt[i-].x)!=getfather(vt[i-].y))
{
ans += vt[i-].w;
dad[getfather(vt[i-].x)] = vt[i-].y;
cnt++;
if(cnt == n)
{
cout << ans << endl;
return ;
}
}
}
return ;
} int main()
{
freopen("in.txt","r",stdin);
cin >> n >> e;
for(int i = ; i < e; i++)
{
node newnode;
cin >>newnode.x >> newnode.y >> newnode.w;
vt.push_back(newnode);
}
sort(vt.begin(),vt.end(),cmp);
kruskal(); return ;
}

Kruskal算法初步的更多相关文章

  1. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  2. 最小生成树---Prim算法和Kruskal算法

    Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...

  3. 最小生成树的Kruskal算法实现

    最近在复习数据结构,所以想起了之前做的一个最小生成树算法.用Kruskal算法实现的,结合堆排序可以复习回顾数据结构.现在写出来与大家分享. 最小生成树算法思想:书上说的是在一给定的无向图G = (V ...

  4. 最小生成树——kruskal算法

    kruskal和prim都是解决最小生成树问题,都是选取最小边,但kruskal是通过对所有边按从小到大的顺序排过一次序之后,配合并查集实现的.我们取出一条边,判断如果它的始点和终点属于同一棵树,那么 ...

  5. Kruskal算法(三)之 Java详解

    前面分别通过C和C++实现了克鲁斯卡尔,本文介绍克鲁斯卡尔的Java实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的 ...

  6. Kruskal算法(二)之 C++详解

    本章是克鲁斯卡尔算法的C++实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的代码说明 6. 克鲁斯卡尔算法的源码 转 ...

  7. Kruskal算法(一)之 C语言详解

    本章介绍克鲁斯卡尔算法.和以往一样,本文会先对克鲁斯卡尔算法的理论论知识进行介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3 ...

  8. 最小生成树问题---Prim算法与Kruskal算法实现(MATLAB语言实现)

    2015-12-17晚,复习,甚是无聊,阅<复杂网络算法与应用>一书,得知最小生成树问题(Minimum spanning tree)问题.记之. 何为树:连通且不含圈的图称为树. 图T= ...

  9. 学习笔记之 prim算法和kruskal算法

    ~. 最近数据结构课讲到了prim算法,然而一直使用kruskal算法的我还不知prim的思想,实在是寝食难安,于此灯火通明之时写此随笔,以祭奠我睡过去的数 据结构课. 一,最小生成树之prim pr ...

随机推荐

  1. 【转】Spring Boot 日志配置(超详细)

    更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. [toc] 简书不支持目录,截图一张. image.png 默认日志 Logback: 默认情况 ...

  2. Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2

    环境:centos7.1 docker run -t -i centos /bin/bash 运行上面的命令开启容器时报错: /usr/bin/docker-current: Error respon ...

  3. Python多线程、多进程和协程的实例讲解

    线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...

  4. Mysql中字段类型之时间戳大坑2

      本文的内容依旧是讨论mysql字段类型为时间戳timestamp的问题,在遇到了之前的那个问题之后,今天测试人员又给我提了一个bug,是在前端页面提交会议表单的时候,选择了一个会议时间(2059年 ...

  5. DjangoORM 执行 python manage.py makemigrations出现 no changes detected

    出现 no changes detected python manage.py makemigrations No changes detected 为什么出现这种情况: 当执行这条命令,他会去找所有 ...

  6. Excel文本型数据转为数值型的方法

    操作步骤非常简单,适用于所有版本的Excel. 在任意一个空白单元格中输入数值1,然后选中该单元格,执行复制操作: 选中需要转换的单元格(或区域),执行“编辑.选择性粘贴”命令,打开“选择性粘贴”对话 ...

  7. 工作笔记——web字体格式转换

    转载自:http://blog.csdn.net/xiaolongtotop/article/details/8316554 目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字体 ...

  8. Android 按钮 弹出对话框

    ackage com.example.helloworld; import android.os.Bundle;import android.app.Activity;import android.a ...

  9. C# 各种导入 Excel 文件的数据的方法总结

    在导入之前都需要将上传的文件保存到服务器,所以避免重复的写这些代码,先贴出上传文件并保存到服务器指定路径的代码. protected void btnImport_Click(object sende ...

  10. java 并发——线程

    一.前言 前一篇文章总结了对 java 并发中的内置锁的理解,这篇文章来说说线程 ,并发与线程总有剪不断理还乱的关系.关于 java 线程的基本概念.线程与进程的关系以及如何创建线程,想必大家都很清楚 ...