atcoder#AGC043C. [AGC043C] Giant Graph

[AGC043C] Giant Graph

配点 : 900900

問題文

NN 頂点の、それぞれ M1M_1, M2M_2, M3M_3 辺の単純な無向グラフ XX, YY, ZZ が与えられます。 頂点をそれぞれ x1,x2,,xNx_1, x_2, \dots, x_N, y1,y2,,yNy_1, y_2, \dots, y_N, z1,z2,,zNz_1, z_2, \dots, z_N とします。 XX, YY, ZZ の辺はそれぞれ (xai,xbi)(x_{a_i}, x_{b_i}), (yci,ydi)(y_{c_i}, y_{d_i}), (zei,zfi)(z_{e_i}, z_{f_i}) です。

X,Y,ZX, Y, Z を元に N3N^3 頂点の無向グラフ WW を作ります。 X,Y,ZX, Y, Z から 11 つずつ頂点を選ぶ方法は N3N^3 通りありますが、これがそれぞれ WW の頂点と一対一に対応します。xi,yj,zkx_i, y_j, z_k を選ぶことに対応する頂点を (xi,yj,zk)(x_i, y_j, z_k) で表すこととします。

WW の辺を、以下の手順に沿って張ります。

  • XX の各辺 (xu,xv)(x_u, x_v)、及び全ての w,lw, l について、(xu,yw,zl)(x_u, y_w, z_l), (xv,yw,zl)(x_v, y_w, z_l) 間に辺を張る
  • YY の各辺 (yu,yv)(y_u, y_v)、及び全ての w,lw, l について、(xw,yu,zl)(x_w, y_u, z_l), (xw,yv,zl)(x_w, y_v, z_l) 間に辺を張る
  • ZZ の各辺 (zu,zv)(z_u, z_v)、及び全ての w,lw, l について、(xw,yl,zu)(x_w, y_l, z_u), (xw,yl,zv)(x_w, y_l, z_v) 間に辺を張る

そして、WW の頂点 (xi,yj,zk)(x_i, y_j, z_k) の重みを $1,000,000,000,000,000,000^{(i +j + k)} = 10^{18(i + j + k)}$ とします。WW独立集合

のうち、頂点の重みの総和の最大値を求めてください。そしてそれを 998,244,353998,244,353 で割った余りを出力してください。

制約

  • 2N100,0002 \leq N \leq 100,000
  • 1M1,M2,M3100,0001 \leq M_1, M_2, M_3 \leq 100,000
  • 1ai,bi,ci,di,ei,fiN1 \leq a_i, b_i, c_i, d_i, e_i, f_i \leq N
  • XX, YY, ZZ は単純、つまり自己ループや多重辺は存在しない

入力

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

NN

M1M_1

a1a_1 b1b_1

a2a_2 b2b_2

\vdots

aM1a_{M_1} bM1b_{M_1}

M2M_2

c1c_1 d1d_1

c2c_2 d2d_2

\vdots

cM2c_{M_2} dM2d_{M_2}

M3M_3

e1e_1 f1f_1

e2e_2 f2f_2

\vdots

eM3e_{M_3} fM3f_{M_3}

出力

重みの総和の最大値を 998,244,353998,244,353 で割った余りを出力せよ。

2
1
1 2
1
1 2
1
1 2
46494701

(x2,y1,z1)(x_2, y_1, z_1), (x1,y2,z1)(x_1, y_2, z_1), (x1,y1,z2)(x_1, y_1, z_2), (x2,y2,z2)(x_2, y_2, z_2) を選ぶ場合が最適です。 答えは 3×1072+101083 \times 10^{72} + 10^{108}998,244,353998,244,353 で割ったあまりの 46,494,70146,494,701 です。

3
3
1 3
1 2
3 2
2
2 1
2 3
1
2 1
883188316
100000
1
1 2
1
99999 100000
1
1 100000
318525248