配点 : 900 点
問題文
N 頂点の、それぞれ M1, M2, M3 辺の単純な無向グラフ X, Y, Z が与えられます。
頂点をそれぞれ x1,x2,…,xN, y1,y2,…,yN, z1,z2,…,zN とします。
X, Y, Z の辺はそれぞれ (xai,xbi), (yci,ydi), (zei,zfi) です。
X,Y,Z を元に N3 頂点の無向グラフ W を作ります。
X,Y,Z から 1 つずつ頂点を選ぶ方法は N3 通りありますが、これがそれぞれ W の頂点と一対一に対応します。xi,yj,zk を選ぶことに対応する頂点を (xi,yj,zk) で表すこととします。
W の辺を、以下の手順に沿って張ります。
- X の各辺 (xu,xv)、及び全ての w,l について、(xu,yw,zl), (xv,yw,zl) 間に辺を張る
- Y の各辺 (yu,yv)、及び全ての w,l について、(xw,yu,zl), (xw,yv,zl) 間に辺を張る
- Z の各辺 (zu,zv)、及び全ての w,l について、(xw,yl,zu), (xw,yl,zv) 間に辺を張る
そして、W の頂点 (xi,yj,zk) の重みを $1,000,000,000,000,000,000^{(i +j + k)} = 10^{18(i + j + k)}$ とします。W の独立集合
のうち、頂点の重みの総和の最大値を求めてください。そしてそれを 998,244,353 で割った余りを出力してください。
制約
- 2≤N≤100,000
- 1≤M1,M2,M3≤100,000
- 1≤ai,bi,ci,di,ei,fi≤N
- X, Y, Z は単純、つまり自己ループや多重辺は存在しない
入力
入力は以下の形式で標準入力から与えられる。
N
M1
a1 b1
a2 b2
⋮
aM1 bM1
M2
c1 d1
c2 d2
⋮
cM2 dM2
M3
e1 f1
e2 f2
⋮
eM3 fM3
出力
重みの総和の最大値を 998,244,353 で割った余りを出力せよ。
2
1
1 2
1
1 2
1
1 2
46494701
(x2,y1,z1), (x1,y2,z1), (x1,y1,z2), (x2,y2,z2) を選ぶ場合が最適です。
答えは 3×1072+10108 を 998,244,353 で割ったあまりの 46,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