atcoder#ARC141E. [ARC141E] Sliding Edge on Torus

[ARC141E] Sliding Edge on Torus

配点 : 700700

問題文

N2N^2 頂点からなる無向グラフがあります。はじめ、グラフは辺を持ちません。 0i, j<N0 \leq i,\ j < N を満たす整数の組 (i, j)(i,\ j) それぞれについて、それに対応する頂点がひとつ存在し、その頂点を (i, j)(i,\ j) と呼びます。

QQ 個のクエリが与えられます。ii 番目のクエリでは 44 つの整数 ai, bi, ci, dia_i,\ b_i,\ c_i,\ d_i が与えられるので以下のように順番に処理してください。

  • k (0k<N)k\ (0 \leq k < N) について、22 頂点 $((a_i+k) \bmod N,\ (b_i+k) \bmod N),\ ((c_i+k) \bmod N,\ (d_i+k) \bmod N)$ 間に辺を追加してください。その後、グラフの連結成分数を出力してください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0ai, bi, ci, di<N0 \leq a_i,\ b_i,\ c_i,\ d_i < N
  • (ai, bi)(ci, di)(a_i,\ b_i) \neq (c_i,\ d_i)
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

NN QQ

a1a_1 b1b_1 c1c_1 d1d_1

a2a_2 b2b_2 c2c_2 d2d_2

\vdots

aQa_Q bQb_Q cQc_Q dQd_Q

出力

QQ 行出力してください。ii 行目には ii 番目のクエリにおけるグラフの連結成分数を出力してください。

3 3
0 0 1 2
2 0 0 0
1 1 2 2
6
4
4

11 番目のクエリでは頂点 (0, 0), (1, 2)(0,\ 0),\ (1,\ 2) 間、(1, 1), (2, 0)(1,\ 1),\ (2,\ 0) 間、(2, 2), (0, 1)(2,\ 2),\ (0,\ 1) 間に辺が追加されます。これにより連結成分数は 99 から 66 に変化します。

4 3
0 0 2 2
2 3 1 2
1 1 3 3
14
11
11

クエリ処理の結果、グラフは単純グラフではなくなることがあります。

6 5
0 0 1 1
1 2 3 4
1 1 5 3
2 0 1 5
5 0 3 3
31
27
21
21
19