BOJ 5916 λμ₯ κ΄λ¦¬
·160 words·1 min
π λ¬Έμ μ 보 # λ§ν¬: https://www.acmicpc.net/problem/5916 π§ κ΄μ°° λ° μ κ·Ό # νΈλ¦¬κ° μ£Όμ΄μ§λ€. λ μ μ μ¬μ΄ κ²½λ‘μ 1μ λνλ€. λ μ μ μ¬μ΄ κ²½λ‘μ κ°μ€μΉμ ν©μ κ³μ°νλ€. λμ΄λΈνκ²λ $O(QN)$μ΄κ² μ§λ§, HLDμ Lazy μΈκ·Έλ¨ΌνΈ νΈλ¦¬λ₯Ό μ΄μ©ν΄μ $O(Qlog^2N)$μ λμ κ³μ°ν μ μμ κ² κ°λ€. π» νμ΄ # μ½λ (C++): void solve(){ int N, M; cin >> N >> M; Tree tree(N); rep(i, 0, N-1){ int u, v; cin >> u >> v; tree.add_edge(u, v); } tree.build(); LazySegmentTree seg(N+1); while(M--){ char op; cin >> op; int u, v; cin >> u >> v; if(op == 'P'){ vector<pii> segs = tree.hld_path(u, v, false, false); for(auto [L, R]: segs) seg.update(L, R, 1); } else{ ll ans = 0; vector<pii> segs = tree.hld_path(u, v, false, false); for(auto [L, R]: segs) ans += seg.query(L, R); cout << ans << '\n'; } } } π ꡬν μ½λ μ κΈ