diff options
Diffstat (limited to 'content/graph/treeIsomorphism.cpp')
| -rw-r--r-- | content/graph/treeIsomorphism.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/content/graph/treeIsomorphism.cpp b/content/graph/treeIsomorphism.cpp new file mode 100644 index 0000000..355fefb --- /dev/null +++ b/content/graph/treeIsomorphism.cpp @@ -0,0 +1,15 @@ +vector<vector<int>> adj; +map<vector<int>, int> known; // dont reset! + +int treeLabel(int v, int from = -1) { + vector<int> children; + for (int u : adj[v]) { + if (u == from) continue; + children.push_back(treeLabel(u, v)); + } + sort(all(children)); + if (known.find(children) == known.end()) { + known[children] = sz(known); + } + return known[children]; +} |
