verify/tree/hld/hld_vertex_set_path_composite_test.nim

This documentation is automatically generated by online-judge-tools/verification-helper

:heavy_check_mark: verify/tree/hld/hld_vertex_set_path_composite_test.nim

Depends on

Code

# verification-helper: PROBLEM https://judge.yosupo.jp/problem/vertex_set_path_composite
import sequtils, strutils, algorithm
import cplib/graph/graph
import cplib/collections/segtree
import cplib/tree/heavylightdecomposition
include atcoder/modint
type mint = modint998244353
proc scanf(formatstr: cstring){.header: "<stdio.h>", varargs.}
proc ii(): int {.inline.} = scanf("%lld\n", addr result)

var n, q = ii()
var a = newSeqWith(n, (mint(ii()), mint(ii())))
var g = initUnWeightedUnDirectedStaticGraph(n)
for i in 0..<n-1:
    var u, v = ii()
    g.add_edge(u, v)
g.build

var hld = initHld(g, 0)
var v = (0..<n).toSeq.mapIt(hld.toVtx(it)).mapIt(a[it])
proc op(x, y: (mint, mint)): (mint, mint) =
    var (a, b) = x
    var (c, d) = y
    return (a*c, c*b+d)

var seg = initSegmentTree[(mint, mint)](v, op, (mint(1), mint(0)))
var segr = initSegmentTree[(mint, mint)](v.reversed, op, (mint(1), mint(0)))
var ans = newSeqOfCap[int](q)

for i in 0..<q:
    var t = ii()
    if t == 0:
        var p, c, d = ii()
        seg[hld.toSeq(p)] = (mint(c), mint(d))
        segr[n - 1 - hld.toSeq(p)] = (mint(c), mint(d))
    else:
        var u, v, x = ii()
        var l = hld.lca(u, v)
        var a = (mint(1), mint(0))
        for (l, r) in hld.path(l, u, true, true): a = op(a, segr.get(l..<r))
        for (l, r) in hld.path(l, v, false, false): a = op(a, seg.get(l..<r))
        ans.add((a[0] * x + a[1]).val)
echo ans.join("\n")
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/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.12/site-packages/onlinejudge_verify/languages/nim.py", line 86, in bundle
    raise NotImplementedError
NotImplementedError
Back to top page