如何判断两个无根树是同构的??同样的我们想办法把每棵树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出一棵树
对于上面那道题知道了这个,就很简单了
感悟:学无止境,应该不断增长自己的姿势