This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub online-judge-tools/verification-helper
when not declared(EXAMPLES_UNION_FIND_TREE_NIM):
const EXAMPLES_UNION_FIND_TREE_NIM = true
import sequtils
import "examples/nim/hoge.nim"
# @brief a Union-Find Tree
# @note most operations in $O(\alpha(n))$ where $\alpha(n)$ is the inverse of Ackermann function
# @note implemented with union-by-size + path-compression
type UnionFindTree = object
data:seq[int]
proc initUnionFindTree*(n:int):UnionFindTree = UnionFindTree(data:newSeqWith(n, -1))
proc isRoot*(self: UnionFindTree, i:int):bool = return self.data[i] < 0
proc findRoot*(self: var UnionFindTree, i:int):int =
if self.is_root(i):
return i
else:
self.data[i] = self.findRoot(self.data[i])
return self.data[i]
proc treeSize*(self: var UnionFindTree, i:int):int = - self.data[self.findRoot(i)]
proc uniteTrees*(self: var UnionFindTree, i, j:int):int {.discardable.} =
var
i = self.findRoot(i)
j = self.findRoot(j)
if i != j:
if self.tree_size(i) < self.tree_size(j): swap(i, j)
self.data[i] += self.data[j]
self.data[j] = i
return i
proc isSame*(self: var UnionFindTree, i, j:int):bool = self.find_root(i) == self.find_root(j)
proc hoge*() = echo "Hello World"
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
File "/home/runner/.local/lib/python3.10/site-packages/onlinejudge_verify/languages/nim.py", line 86, in bundle
raise NotImplementedError
NotImplementedError