zoukankan      html  css  js  c++  java
  • 知识:树同构判断

    如何判断两个无根树是同构的??同样的我们想办法把每棵树hash成一个数字,通过数字判断是否相同就行

    对于HDU5732 subway来说 http://acm.hdu.edu.cn/showproblem.php?pid=5732 (2016多校第一场的题)

    10w个点如何判断同构??

    题解如下:

    这个题是一个树的同构判断,想办法用一个和节点顺序无关的哈希函数将树表示出来即可。 这里提供一种方法:首先求解树的中点(重心即可),

    然后将中点作为根。只有一个结点的子树哈希值为 1。选一个比较大的质数P和一个特别大的质数Q。对于每一颗树,把它的所有子树的哈希

    值排序。然后hash=sum(P^i∗hash[i])%Q,就能算出来总体的哈希值。有两个中点的树两个 中点都试一下。为了保险可以检查下哈希值有没有重的。

    这样就可以递归hash出一棵树

    对于上面那道题知道了这个,就很简单了

    感悟:学无止境,应该不断增长自己的姿势

  • 相关阅读:
    团队作业(9)
    团队作业(8)
    团队作业(7)
    团队作业(6)
    团队作业(5)
    团队作业(4)
    团队作业(3)
    05数据爬去
    02周总结
    04结对开发
  • 原文地址:https://www.cnblogs.com/shuguangzw/p/5712737.html
Copyright © 2011-2022 走看看