额...第一次写仙人掌,不知道怎么对拍. 求各位dalao帮一下
求问如何生成一颗仙人掌
2017-05-06 14:25:50 By RiseFalcon
评论
WrongAnswer
提供vfk大大的blog:http://vfleaking.blog.uoj.ac/blog/89
- 2017-05-06 14:37:06
immortalCO
VFK 讲的是一种方式,这里还有另一种方式:
Step 1. 生成一棵 m 个点的树 T
Step 2. 选取树上的一个不包含叶子的独立集 I,这一步可以随机一个排列,按顺序决定排列中每一项在不在 I 中
Step 3. 将 I 中每个点 p 取出,将所有和 p 相邻的点按照任意顺序连成环,然后删除 p 及其所有边
Step 4. 现在你得到了一棵 m-|I| 个点、m 条边、|I| 个环的仙人掌
这是一种“基于圆方树的生成仙人掌算法”,其代码比 DFS 更易于实现(只需要存一个点的出边,不用遍历图,和 NOIPD2T2 差不多好写)。如果想要环很大的话,在 I 中选择一些点度较大的节点即可。
- 2017-05-06 17:52:56
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。