kemuniku / cplib

Creative Commons Zero v1.0 Universal
4 stars 1 forks source link

Functional Graphテンプレ #251

Closed kemuniku closed 4 days ago

kemuniku commented 5 months ago

いろいろできるとちょっと便利かもしれない 今のところやりたいこと ・サイクルへの距離(サイクルに含まれる場合は0) ・連結成分に存在するサイクルのサイクル長 ・サイクルを取得 ・x回辺の先へ移動を繰り返した後の頂点(x<=10^18)

seekworser commented 5 months ago

とりあえず前計算O(N)でlen_to_cycleとcycle_lenあたりを計算したい

kemuniku commented 5 months ago

前計算O(NlogN)かO(Nlog(10^18))かけてi個先の頂点をダブリングするやつが欲しい説もある

kemuniku commented 5 months ago

あとはサイクルに属しているかのboolとか?

kemuniku commented 5 months ago

あとはget cycleとか(O(N)でいいので)

kemuniku commented 5 months ago

サイクルに属しているかのboolは、サイクルまでの距離(属しているならば0)の配列の作成で対応しましょう

kemuniku commented 5 months ago

i頂点先ってO(N)/O(1)でできるっけ

seekworser commented 5 months ago

できる気がしてきた

kemuniku commented 5 months ago

パスではなく木なのでむりじゃないかなぁになった Level Ancestor Problem がクエリO(logN)なので

seekworser commented 5 months ago

ごめんなさいになった

kemuniku commented 5 months ago

<O(n), O(1)> LAが存在するらしいです(何?)

kemuniku commented 5 months ago

実用上は遅いらしいのでどうしようねといった感じ 1.全部ダブリングでやる log(10^18)とかまでもつ 2.一部ダブリングでやる log(木の深さ) 3.HL分解する メモリがO(N)になります

seekworser commented 5 months ago

備忘 https://37zigen.com/level-ancestor-problem/

kemuniku commented 5 months ago

そういえばLevel Ancestor Problem って今ない?(HL分解にありましたっけ)

seekworser commented 5 months ago

LAはあったはず https://github.com/kemuniku/cplib/blob/96dedc8ca7273c40ba574b012fe5cfb9be7668e7/src/cplib/tree/heavylightdecomposition.nim#L138

seekworser commented 5 months ago

個人的には実装軽いし1でいいいかなの気持ちがあります

kemuniku commented 5 months ago

2もそんなには重くないと思うぜ!

seekworser commented 5 months ago

ヒィン………

kemuniku commented 5 months ago

頂点AからBに行くことはできるか、できるなら何回の移動で行くことができるか とか

kemuniku commented 5 months ago

https://x.com/maspy_stars/status/1559842309688008707?s=61

kemuniku commented 3 months ago

https://atcoder.jp/contests/abc367/editorial/10719

kemuniku commented 1 month ago

https://atcoder.jp/contests/abc367/submissions/58138396