题目描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed88345c1f98bca3f946783019d9372c.png)
题解
这道题目的难点在于如何判断树的同构,这就是所谓的树的哈希。
我们假设需要求解以x为根的子树的hash值,我们可以将子树的hash值存储到vector内,排序以后用map来判断重复。这个写法十分简单。具体如下:
int dfs(int x,int fa)
{
if (f[x][fa]) return f[x][fa];
vector <int> s;
for (int i=0;i<a[x].size();++i)
{
int y = a[x][i];
if (y == fa) continue;
s.push_back(dfs(y,x))