首页 > 其他分享 >「学习笔记」重修生成树

「学习笔记」重修生成树

时间:2023-04-29 09:13:50浏览次数:37  
标签:return int 重修 笔记 生成 fa tot dis

最小生成树(Minimum Spanning Tree,MST)为边权和最小的生成树。

算法

Kruskal 算法

实现

将所有的边按边权从小到大排序,然后用并查集维护一条边所连接的两个点是否已联通(不能形成环)。

int find(int x) {
	return fa[x] == x ? fa[x] : fa[x] = find(fa[x]);
}

ll kruskal() {
	ll tot = 0, cot = 0;
	sort(e + 1, e + m + 1);
	for (int i = 1; i <= n; ++ i) {
		fa[i] = i;
	}
	for (int i = 1; i <= m; ++ i) {
		int x = e[i].u, y = e[i].v;
		int fx = find(x), fy = find(y);
		if (fx != fy) {
			fa[fx] = fy;
			tot += e[i].w;
			++ cot;
			if (cot >= n - 1)	return tot;
		}
	}
	return 0;
}

Prim 算法

原理与 dijkstra 是一样的,都是用了贪心的思想。
dis[v] 连向 \(v\) 点的最小生成树的边的边长。

void prim() {
	priority_queue<pil, vector<pil>, greater<pil> > q;
	q.push(make_pair(0, 1));
	while (!q.empty()) {
		int u = q.top().second;
		q.pop();
		if (vis[u])	continue;
		++ cnt;
		tot += dis[u];
		vis[u] = 1;
		if (cnt >= n)	return ;
		for (auto it : son[u]) {
			int v = it.first, w = it.second;
			if (dis[v] > w) {
				dis[v] = w;
				q.push(make_pair(dis[v], v));
			}
		}
	}
}

标签:return,int,重修,笔记,生成,fa,tot,dis
From: https://www.cnblogs.com/yifan0305/p/17363255.html

相关文章

  • 梦断代码读书笔记 6
    第十章工程师和艺术家编程是工程还是文学?是科学还是艺术?高德纳写的书名叫《计算机程序设计艺术》,他在1984年获得图灵奖时发表感言说:“计算机编程是门艺术”。写《计算机程序设计艺术》这本书他花了十年,写TeX和metafont程序设计没写到也花了近10年。他宣称,写软件要比写书“难多......
  • chipyard——自定义配置生成和前仿
    一,生成配置前面用rocket-chip仓库做了生成和前仿,为了方便扩展外设,这里转到chipyard仓库。首先我们生成一个之前用的配置: 为删SimDTM(我的测试框架不需要),先在rocket的subsystem/config下创建一个class: 然后在chipyard顶层创建config: makeCONFIG=MyConfig创建设计 发......
  • 2023/4/28读书笔记
       今天,上了计算机网络,学习了运输层的相关知识,简单介绍了UDP与TCP的协议与区别,一个可靠,一个尽可能交付,学习了端口与运输层为应用进程提供逻辑通信。后来,在概率论上学了了方差的定义,计算方法,常见方差,方差性质,标准差,标准化,协方差COV的定义,计算方法,性质,与相关系数。......
  • 四月读书笔记2
    四月读书笔记2关于进程管理和客户需求,进程管理只是项目管理中的一个方面,还有比进程管理失控更加可怕的,那便是未能准确地获取客户的需求,导致项目运行方向犹如救经引足,南辕北辙。收集客户需求看似简单,然而实际情况千变万化不一而足,某些用户仅仅偶尔使用程序,有些用户必须依赖程序,还......
  • 读书笔记02
    这本书讲述了几十年前软件专案管理问题与经验,作者将大型系统开发比作一个焦油坑,我原本以为软件开发还是比较容易的,有了新想法,就会有新的软件产品出现,但是却不知道项目不能满足目标、进度、预算的要求,就不能成为一个好项目。程序,通过不同的途径转变成不同的产物,使之变得更有用,成本......
  • 四月读书笔记二
    程序员几乎仅仅工作在单纯的思考中,程序员凭空运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此灵活,如此得益于精炼和重建,如此得容易实现概念上的设想。这句话是《人月神话》中我比较喜欢的一句话。所谓焦油坑,就是由于如同诗人一般的程序员们不断的将工作......
  • 构建之法读书笔记-4月
    《构建之法》是一本由丹尼尔·布鲁斯坦所著的研究人类思维方式的书籍。它探讨了构建和创新的过程,以及我们如何利用这些过程来改善我们的生活和工作。在全书中,布鲁斯坦提出了一种三个阶段的构建模型,分别是发现、抽象和建立。他指出这三个阶段不仅是构建过程的必要步骤,而且在任何......
  • 《代码大全》读书笔记3
    第七章是《代码大全》中关于代码优化的章节,对于软件工程师来说,良好的代码优化技能是非常重要的。在这一章中,作者详细介绍了如何进行代码优化,包括性能调整、空间利用、算法和数据结构的优化等方面的内容。通过阅读这一章,我深刻地认识到了代码优化的重要性,并学习了许多实用的技巧和......
  • 「学习笔记」重修最短路
    \(u\)到\(v\)的最短路径的长度就是\(u\)到\(v\)的最短路。单源最短路算法可以求出一个点到其他点的最短路。全源最短路算法可以求出每一个点到其他各点的最短路。松弛操作:dis[v]=min(dis[v],dis[u]+w);。算法Floyd算法全源最短路算法,时间复杂度\(O_{n^3}\),......
  • [笔记] ELMO, BERT, GPT 简单讲解 - 李宏毅
    国内视频地址:https://www.bilibili.com/video/BV17441137fa/?spm_id_from=333.880.my_history.page.click&vd_source=bda72e785d42f592b8a2dc6c2aad24091NLP基础1.1词的表示过程演进:one-hot编码词袋模型wordembedding1.2multiplesense1)明确两个概念:token和ty......