UOJ Logo RiseFalcon的博客

博客

求问如何生成一颗仙人掌

2017-05-06 14:25:50 By RiseFalcon

额...第一次写仙人掌,不知道怎么对拍. 求各位dalao帮一下

评论

WrongAnswer
提供vfk大大的blog:http://vfleaking.blog.uoj.ac/blog/89
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 中选择一些点度较大的节点即可。

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。