树哈希
后言
- 就背下一个 hash 函数就行了
ull shift(ull x)
{
static const ull mask = mt19937_64(time(0))();
x ^= mask;
x ^= x << 13;
x ^= x >> 17;
x ^= mask;
return x;
}
ull dfs(int u, int p)
{
ull h = 1;
for (int v : G[u]) if (v != p)
h += shift(dfs(v, u));
ans.push_back(h); return h;
}

浙公网安备 33010602011771号