树哈希

后言

  • 就背下一个 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;
}
posted @ 2025-04-23 08:01  LUHCUH  阅读(16)  评论(0)    收藏  举报