Peter算法小课堂—树的应用

这篇具有很好参考价值的文章主要介绍了Peter算法小课堂—树的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开篇先给大家讲个东西,叫vector,有老师称之为“向量”,当然与数学中的向量不一样啊,所以我要称之为“长度可变的数组”

vector

头文件:#include <vector>

用法:vector<int> d;

尾部增加元素:d.push_back(……);

元素个数:d.size()

数组方括号操作:d[i]

尾部删除元素:d.pop_back(……);

清空数组:d.clear();

树 

树的概念:c++ 图论-CSDN博客

一般,树的表示用邻接表来表示,表达形式是vector<int> to[N];

那邻接表加边呢?如下

void add(int u,int v){
	to[u].push_back(v);
	to[v].push_back(u);
}

邻接表输出呢?

for(int u=1;u<=n;u++,cout<<endl)
	for(int i=0;i<to[u].size();i++)
		cout<<to[u][i];

输入所有边的端点呢?

void input(){
	cin>>n;
	for(int i=1;i<=u-1;i++){
		int u,v;
		cin>>u>>v;
		add(u,v);
	}
}

输入父节点呢?

void input(){
	cin>>n;
	for(int u=2;u<=n;u++){
		cin>>p[u];
		add(u,p[u]);
	}
}

输入儿子节点呢?

void input(){
	cin>>n;
	int c,v;
	for(int u=1;u<=n;u++){
		cin>>c;
		for(int i=0;i<c;i++){
			cin>>v;
			add(u,v);
		}
	}
}

dfs会吗?解决。1645题尝试一下,下一篇发题解文章来源地址https://www.toymoban.com/news/detail-785914.html

到了这里,关于Peter算法小课堂—树的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Peter算法小课堂—线性dp

    今天,你读完这篇文章,普及组的动态规划已经可以秒了。 求两个数列的最长公共子序列(Longest Common Subsequence,LCS)的长度。 数列 X 和 Y 的最长公共子序列 Z,是指 Z 既是 X 的子序列,又是 Y 的子序列,而且任意长度超过 Z 的数列 Z∗ 都不符合这个性质。 f[i][j]表示

    2024年04月23日
    浏览(29)
  • Peter算法小课堂—自定义容器

    这个算法复杂度为O(nm),显然有更快的算法  但是,这样写有个很危险的错误,如下 运行出来是这样的,  原因很简单,因为set的功能是排序、去重,然而结构体排序要加上“.\\\",所以会报错 改后代码, 那么,回到原题,代码该怎么写呢? 当然这个代码也有高级版,但要升

    2024年02月04日
    浏览(28)
  • Peter算法小课堂—拓扑排序与最小生成树

    讲拓扑排序前,我们要先了解什么是DAG树。所谓DAG树,就是指“有向无环图”。请判断下列图是否是DAG图 第一幅图,它不是DAG图,因为它形成了一个环。第二幅图,它也不是DAG图,因为它没有方向。第三幅图才叫真正的DAG图(DAG图不一定联通)。 那什么叫DAG图的拓扑排序呢

    2024年01月21日
    浏览(35)
  • acwing算法提高之图论--最小生成树的扩展应用

    本专题用来记录使用最小生成树算法(prim或kruskal)解决的扩展题目。 题目1 :1146新的开始 C++代码如下, 题目2 :1145北极通讯网络 C++代码如下, 题目3 :346走廊泼水节 C++代码如下, 题目4 :1148秘密的牛奶运输 C++代码如下,

    2024年04月16日
    浏览(27)
  • acwing算法提高之图论--最小生成树的典型应用

    本专题用来记录使用prim算法或kruskal算法求解的题目。 题目1 :1140最短网络 C++代码如下, 题目2 :1141局域网 C++代码如下, 题目3 :1142繁忙的都市 C++代码如下, 题目4 :1143联络员 C++代码如下, 题目5 :1144连接格点 C++代码如下,

    2024年04月27日
    浏览(28)
  • 【图论】最小生成树的应用

    P1550 [USACO08OCT] Watering Hole G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 1.我们是要使所有的农场都要有水 2.可以从起点引水,也可以互相引水。 3.费用要最小 这时我们可以想到最小生成树,建立一个虚拟节点即可。思路一目了然。 当看到这些条件,可以想到最小生成树 1.涉及

    2024年02月10日
    浏览(27)
  • 【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置

    目录 树的直径 题目:树的直径 (两种解法) 做法一:   做法二: 树的重心: 题目: 会议  思路: 题目:医院设置  思路:                   定义:树中距离最远的两个点之间的距离被称为树的直径。 一共有两种做法,先记结论,再给证明!  做法一: (1)任

    2024年04月23日
    浏览(33)
  • 第三章 图论 No.4最小生成树的简单应用

    存在边权为负的情况下,无法求最小生成树 裸题:1140. 最短网络 1140. 最短网络 - AcWing题库 套个prim的板子即可 裸题:1141. 局域网 1141. 局域网 - AcWing题库 裸题,稀疏图,套个kruskal的板子就行 需要注意的是:题目给定的图可能存在多个连通块,若使用prim算法,需要对每个连通

    2024年02月14日
    浏览(40)
  • 算法提高-图论-floyd算法及其扩展应用

    离散化 (只要用到200个点,但是题目给的点编号是1-1000)+ 倍增(快速幂)+ flyod变式(将递推公式改变了) 能用快速幂的原因是递推公式里面的两端路径两两之间相互独立,用结合律就可以用快速幂。矩阵乘法能用快速幂的原因也是矩阵乘法中两两矩阵之间具有结合律 帮助

    2024年02月09日
    浏览(37)
  • 【图论算法】深度优先搜索的应用

    深度优先搜索 (depth-first search)是对先序遍历(preorder traversal)的推广。我们从某个顶点 v 开始处理 v,然后递归地遍历所有邻接到 v 的顶点。 对一棵树的所有顶点的访问需 O(|E|) 时间。对任意图进行该过程时则需要考虑避免圈的出现。为此,当访问一个顶点 v 的时候,由于当时已

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包