首先膜一下vfk领先全球的动态仙人掌栽培技术…
然后谢谢Time-Machine学长在暑假集训时候讲了仙人掌DP.
然后感觉听得并不是很懂…所以再来对着论文学一遍顺便写一写例题代码
这一篇主要先学仙人掌的基础(定义和性质什么的)

————————————线 割 分 是 我 >w<———————————————–
什么是仙人掌?
仙人掌是不含自环的,一条边最多属于一个简单环的无向连通图.
从定义不难看出树其实也是仙人掌的一种,也就是说这几个概念的关系大概是:
树是一种特殊的仙人掌,仙人掌是一类特殊的无向连通图.
从图片来观察一下.

这也是个仙人掌↓

那么我们现在就知道怎样来区分仙人掌和非仙人掌了

对于树我们都很熟悉,那么能不能想办法把仙人掌看成一棵树呢?
办法是有的.仙人掌上最讨厌的就是环.但是我们注意到仙人掌上不可能存在环与其他环有重边,这就好办了,我们可以把环看成类似树上的节点的东西,只是这个节点包含了更大的信息量.(注意只是类似,和真正树上的节点是不一样的!)

仿照树相关的定义,我们可以对仙人掌定义仙人掌上的节点的父亲和环的父亲.
对于仙人掌上的节点,它的父亲是可能存在多种可能的.如果它到根的路径上与它相邻的是一条简单路径而不是环,那么这个节点的父亲和平常树上节点的父亲是没什么区别的, 它的父亲是它到根的简单路径上经历的第二个点.那么如果它到根节点路径上与它相邻的是个环,则将其到根的路径上经历的第一条边所在的环当做其父亲.
对于环,我们将它的父亲定义为一个环上离根最近的点.
相对的那么就出现了儿子关系了.
对于仙人掌上的节点,它的儿子显然可以是环可以是普通节点.
但是对于环的儿子,则是环上除掉这个环的父亲以外的其他所有节点.

区别于普通树,对仙人掌而言环上的节点除了父亲之外还存在父亲节点母亲节点(为什么要起这种名字好容易搞混啊…)
环上节点的父亲节点和母亲节点指这个点在环上相邻的那两个点.
(一定不要搞混啦>_<)

怎样进行仙人掌的遍历和节点信息的确定呢?
依然是从根节点开始DFS.
如果我们将要访问一个节点,而这个节点之前还没有被访问过,那么我们直接把这个节点的父亲设为当前节点就行了.(从环和节点的父亲的定义上看这样显然没问题)
那么如果我们将要访问的那个节点已经被访问过了呢?显然这时候出现了环.
那么就有两种情况:
现在我们假设我们正在访问的节点为x,将要访问的那个节点为y
那么如果x的第一次被访问时间比y早,那么这证明y所在的环已经被我们访问过了,就不需要再单独对y处理什么.
如果x的第一次被访问时间比y晚,则说明x在一个以y为父亲的环上,此时再遍历整个环标记一下父亲节点母亲节点.
至此,整个仙人掌遍历完成,同时仙人掌上所有节点的父子父母信息都已经处理了出来.

【Cactus仙人掌图】仙人掌基础知识学习笔记相关推荐

  1. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  2. opencv-python基础知识学习笔记

    opencv-python基础知识学习笔记 原博地址:https://www.cnblogs.com/silence-cho/p/10926248.html 目录: opencv-python基础知识 ...

  3. 图像基础知识学习笔记

    图像基础知识学习笔记 文章目录 图像基础知识学习笔记 前言 一.图像基础知识相关笔记 1.光学系统影响图像的结构主要包括什么? 2.常见噪声都有什么,其分类,及特点? 3.光圈,快门,景深? 4. I ...

  4. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  5. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  6. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  7. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  8. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  9. Python基础知识学习笔记(一)

    Python基础知识学习笔记(一) 文章目录 Python基础知识学习笔记(一) (一) 认识python 1.注释 2.变量及类型 3.关键字(标识符) (1)什么是关键字? (2)查看关键字 (3 ...

  10. K8s基础知识学习笔记及部分源码剖析

    K8s基础知识学习笔记及部分源码剖析 在学习b站黑马k8s视频资料的基础上,查阅了配套基础知识笔记和源码剖析,仅作个人学习和回顾使用. 参考资料: 概念 | Kubernetes 四层.七层负载均衡的 ...

最新文章

  1. 吹捧导师师娘的论文作者,被处理了!
  2. MyBatis总结与复习
  3. mysql优化Analyze Table
  4. DOM0,DOM2,DOM3事件,事件基础知识入门
  5. 一段旅程的结束和另一端旅程的开始
  6. Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
  7. 1013 B. And
  8. SpringBoot2.0整合Mybatis-Plus多数据源
  9. 朋友写的一个中国象棋游戏,JAVA代码
  10. 如何强制升级索尼sony tablet s android 4.0,【S丶Tablet】教你root Tablet S 4.0.3 R5
  11. 车牌检测License Plate Detection and Recognition in Unconstrained Scenarios
  12. Android网络框架(三)——iptables
  13. SVN提交出错--URL access forbidden for unknown reason
  14. 【Coursera-Machine Learning】自用5
  15. 如何通过iPhone或Android手机制作自己的QR码
  16. 如何学习verilog,如何快速入门?
  17. 关于微信开放平台开发者资质认证的简单记录
  18. 语音识别入门第二节:语音信号处理及特征提取
  19. 开源堡垒机 Teleport
  20. 新iPhone有望首次加入屏下指纹解锁;小米 11推送“降温”补丁;McAfee杀毒软件创始人死于巴塞罗那监狱中|极客头条...

热门文章

  1. 同一样商品,不同颜色和尺码的批量新增
  2. 百度地图坐标拾取系统自定义页面
  3. 推荐系统遇上深度学习(十二)--推荐系统中的EE问题及基本Bandit算法
  4. 怎样看服务器是虚拟还是物理,如何判断服务器为虚拟机还是物理真机?
  5. 计算机制作卡通插画,​电脑制作漫画有哪些方法?
  6. Ubuntu14.04 安装Firefox flash插件
  7. 计算机网络基础交换机的基本配置实验报告,计算机网络基础实验报告
  8. pip安装使用镜像工具pqi
  9. 如何解决merge conflict的方法
  10. java实现批量注册_Java写的批量域名注册查询程序