問題一覧 > 教育的問題

No.2274 三角彩色

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 9
作問者 : 👑 p-adicp-adic / テスター : ecotteaecottea
0 ProblemId : 9231 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-03-02 18:08:50

問題文

入力に 44 個の正整数 N,M,B,QN, M, B, Q と、NN 頂点 MM 辺を持つ無向多重グラフ GGQQ 個のクエリ(後述)が与えられます。

ただしここでの無向多重グラフは自己ループを持たないものを指します。

 

GG の頂点を NN 未満の各非負整数 nn で番号付け「頂点 nn」と呼び、GG の辺を MM 未満の各非負整数 mm で番号付け「辺 mm」と呼び、辺 mm の結ぶ 22 頂点を頂点 imi_m と頂点 jmj_mim,jmi_m, j_m0im<jm<N0 \leq i_m < j_m < N を満たす整数)と置きます。

33 個の MM 未満の非負整数 m0,m1,m2m_0, m_1, m_2 に対し、辺 m0m_0 と辺 m1m_1 と辺 m2m_233 頂点を通る閉路をなすということをここでは m0m1m2\triangle m_0 m_1 m_2 と書き表します。

各クエリは、33 個の MM 未満の非負整数 m0,m1,m2m_0, m_1, m_2 の組 (m0,m1,m2)(m_0,m_1,m_2) であって以下の 22 条件を満たすものです:

  • m0<m1<m2m_0 < m_1 < m_2
  • m0m1m2\triangle m_0 m_1 m_2

また辺 m0m_0 と辺 m1m_1 と辺 m2m_2 を「三角形 (m0,m1,m2)(m_0,m_1,m_2)33 辺」と呼びます。

 

白と黒のみを用いた GG の辺の塗り分け方を考えます。塗り分け方という概念は正確には彩色という概念を用いて定義されます。(クリックで開く)

 

GG の辺全体の集合を EE と置き、白と黒に対応する 22 つの集合 WWBB を固定します。どのように固定しても良く、例えば W={}W = \{\}B={{}}B = \{\{\}\} などのように定めるのが一般的な方法の1つです。

EE{W,B}\{W,B\} 彩色とは、EE から {W,B}\{W,B\} への写像のことです。特に W={}W = \{\} かつ B={{}}B = \{\{\}\} と定める場合、{W,B}\{W,B\} 彩色は 22 彩色と呼ばれます。EE{W,B}\{W,B\} 彩色が与えられた時、WW に値を持つ辺は白で塗られると解釈し BB に値を持つ辺は黒で塗られると解釈することで、GG の辺の(白と黒による)塗り分け方という概念を EE{W,B}\{W,B\} 彩色そのものとして数学的に定式化します。

この定式化においては「辺を塗る順番」などは考慮されません。特に写像の一致の必要十分条件を考えることで、22 つの塗り分け方 ffgg が等しいことと GG の任意の辺 ee に対し ff における ee の色と gg における ee の色が等しいということが同値であることが分かります。

 

塗り分け方は全部で 2M2^M 通りありますが、このうち次の条件を満たす塗り分け方を「良い塗り分け方」と呼びます:

  • NN 未満の任意の非負整数 nn に対し、頂点 nn を端点に持つ白い辺の個数は偶数である。

良い塗り分け方の集合 SSTT を以下の手続きで定める時、最終的な SSTT の要素数を BB で割った余りがそれぞれいくつになるか答えてください。

  1. まず最初に、SS を「少なくとも 11 本の辺を白く塗る良い塗り分け方」全体の集合と定め、TT を「全ての辺を黒く塗る良い塗り分け方」のみからなる集合と定めます。
  2. そしてクエリ (m0,m1,m2)(m_0,m_1,m_2) が与えられるたび、次の条件を満たす良い塗り分け方 cc であって SS に属すものを全て SS から削除し TT に追加します:
    • TT に属す良い塗り分け方 cc' であって、cc' から三角形 (m0,m1,m2)(m_0,m_1,m_2)33 辺の色を全て変更して得られる塗り分け方が cc であるものが存在する。

入力

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

  • 11 行目に N,M,B,QN, M, B, Q が半角空白区切りで与えられます。
  • MM 未満の各非負整数 mm に対し、2+m2 + m 行目に im,jmi_m, j_m が半角空白区切りで与えられます。
  • QQ 以下の各正整数 qq に対し、1+M+q1 + M + q 行目に qq 個目のクエリの各成分が半角空白区切りで与えられます。

制約

入力は以下の制約を満たします:

  • NN3N10183 \leq N \leq 10^{18} を満たす整数
  • MM3M4×1023 \leq M \leq 4 \times 10^2 を満たす整数
  • BB2B1092 \leq B \leq 10^9 を満たす整数
  • QQ1Q1031 \leq Q \leq 10^3 を満たす整数
  • MM 未満の各非負整数 mm に対し、im,jmi_m, j_m0im<jm<N0 \leq i_m < j_m < N を満たす整数
  • QQ 以下の各正整数 qq に対し、qq 個目のクエリ (m0,m1,m2)(m_0,m_1,m_2) の各成分 m0,m1,m2m_0, m_1, m_20m0<m1<m2<M0 \leq m_0 < m_1 < m_2 < Mm0m1m2\triangle m_0 m_1 m_2 を満たす整数

出力

最終的な SSTT の要素数を BB で割った余りを半角空白区切りで 11 行に出力してください。

最後に改行してください。

サンプル

サンプル1
入力
3 3 2 1
0 1
1 2
0 2
0 1 2
出力
0 0

最初 SS には

  • 全ての辺を白で塗る良い塗り分け方

だけが属し、TT には

  • 全ての辺を黒で塗る良い塗り分け方

だけが属しています。クエリ (0,1,2)(0,1,2) が与えられると、後者から三角形 (0,1,2)(0,1,2)33 辺の色を全て変更して得られる塗り方である

  • 全ての辺を白で塗る良い塗り分け方

SS から削除され、TT に追加されます。

従って最終的な SSTT の要素数は 00 個と 22 個であり、これらを B=2B = 2 で割った余りは 0000 です。

サンプル2
入力
3 4 3 1
0 1
0 1
1 2
0 2
0 2 3

22 頂点を複数の辺が結ぶこともあります。

出力
2 2

最初 SS には

  • 00 を黒で塗り残りを白で塗る良い塗り分け方
  • 11 を黒で塗り残りを白で塗る良い塗り分け方
  • 22 と辺 33 を黒で塗り残りを白で塗る良い塗り分け方

が属し、TT には

  • 全ての辺を黒で塗る良い塗り分け方

だけが属しています。クエリ (0,2,3)(0,2,3) が与えられると、TT に属す良い塗り分け方から三角形 (0,2,3)(0,2,3)33 辺の色を全て変更して得られる塗り分け方である

  • 11 を黒で塗り残りを白で塗る良い塗り分け方

SS から削除され TT に追加されます。

従って最終的な SSTT の要素数はそれぞれ 22 個と 22 個であり、それらを B=3B = 3 で割った余りは 2222 です。

サンプル3
入力
3 4 3 2
0 1
0 1
1 2
0 2
0 2 3
1 2 3
出力
0 1

11 つ目のクエリを処理した後の状況はサンプルケース2の最終的な状況と同じです。従って SS には

  • 00 を黒で塗り残りを白で塗る良い塗り分け方
  • 22 と辺 33 を黒で塗り残りを白で塗る良い塗り分け方

が属し、TT には

  • 全ての辺を黒で塗る良い塗り分け方
  • 11 を黒で塗り残りを白で塗る良い塗り分け方

が属しています。22 つ目のクエリ (1,2,3)(1,2,3) が与えられると、TT に属す良い塗り分け方から三角形 (1,2,3)(1,2,3)33 辺の色を全て変更して得られる良い塗り分け方である

  • 00 を黒で塗り残りを白で塗る良い塗り分け方
  • 22 と辺 33 を黒で塗り残りを白で塗る良い塗り分け方

SS から削除され TT に追加されます。

従って最終的な SSTT の要素数はそれぞれ 00 個と 44 個であり、それらを B=3B = 3 で割った余りは 0011 です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。