library-checker-problems icon indicating copy to clipboard operation
library-checker-problems copied to clipboard

[問題案] Persistent Unionfind

Open tsutaj opened this issue 4 years ago • 4 comments

(任意) 問題ID: {persistent_unionfind} 問題名: {Persistent Unionfind}

(任意) 想定アルゴリズム: {永続 Unionfind} (任意) 参考資料: {https://ei1333.github.io/luzhiled/snippets/structure/union-find.html}

問題概要

$N$ 頂点 $0 $ 辺のグラフに $Q$ 個のクエリが飛んでくるので、処理してください。

なお、それぞれのクエリには $1$ から $Q$ までの異なる番号 $k$ がついているものとし、最初の状態のグラフ ($N$ 頂点 $0 $ 辺のグラフ) は 「$0 $ 番目のクエリを処理した直後の時点のグラフ」と定義します。

  1. $k_i$ 番目のクエリを処理した直後の時点でできているグラフに対して、辺 $(u_i, v_i)$ を追加し (すでに辺が存在するならば無視される)、それを処理し終えた直後のグラフを「$i$ 番目のクエリを処理した直後の時点のグラフ」と定義する。
  2. $k_i$ 番目のクエリを処理した直後の時点でできているグラフに対して、頂点 $u_i$ と $v_i$ が連結であるかどうかを答える。

入力

$N$ $Q$
$t_1$ $k_1$ $u_1$ $v_1$
$\vdots$
$t_Q$ $k_Q$ $u_Q$ $v_Q$

制約

  • $1 \leq N \leq 100,000$
  • $1 \leq Q \leq 100,000$
  • $t_i \in \left{ 1, 2 \right}$
  • $0 \leq k_i < i$
  • $0 \leq u_i, v_i < N$

検討事項

https://twitter.com/kimiyuki_u/status/1251170386881855489 を見たので

  • 部分永続?完全永続?
    • 1 番目のクエリにおいて最新版のみ更新対象にするかどうかの問題
  • TL / ML (あるいは制約) は?
    • 完全永続なら重そうですね
  • 問題文
    • どうすると伝わりやすい文章になるのかが難しそうです

tsutaj avatar Apr 17 '20 15:04 tsutaj

k_i は、(k_i = 0) or (k_i 番目のクエリが 1 番目 (unite) の処理) であることを保証したほうがよさそうだが、問題文に書くのが大変そうな気がする?

tsutaj avatar Apr 17 '20 16:04 tsutaj

https://judge.yosupo.jp/problem/persistent_queue 基本的にこれを参考にしていただければと思います

  • 最初の要素は-1番目で(ちょっと不自然な感じもしますが、0-indexed ジャッジなので、まあ…)

k_i は、(k_i = 0) or (k_i 番目のクエリが 1 番目 (unite) の処理) であることを保証したほうがよさそうだが、問題文に書くのが大変そうな気がする?

これはあってもなくてもいいと思います 書くならこの通りに書けば大丈夫かと

yosupo06 avatar Apr 18 '20 12:04 yosupo06

すみません、インデックスの件は https://judge.yosupo.jp/problem/unionfind に合わせて 1-indexed にしてしまっていました・・・ (Persistent Queue の方に合わせます)

とりあえず作業します (また相談するかもしれません)

tsutaj avatar Apr 19 '20 11:04 tsutaj

There is a report that https://judge.yosupo.jp/submission/22415 should be failed with the following case

3 3
0 -1 0 1
0 -1 1 2
1 1 0 1

yosupo06 avatar Sep 11 '20 11:09 yosupo06

テストケース追加作業待ちかこれ

maspypy avatar Mar 26 '23 16:03 maspypy

作業しているのですが、どちらにしても小さいので出力クエリは 6 通り入れようと思います。

NachiaVivias avatar Apr 02 '23 10:04 NachiaVivias