難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Solicitation of Murder

作成者 loop0919

テスター mackerel38

難易度(作成者設定) Lv.5

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

牢屋敷に NN 人の囚人がいます。各囚人にはそれぞれ 11 から NN までの番号が付けられており、はじめすべての囚人は生存しています。

MM 個の関係が整数対 (Ai,Bi) (1≤i≤M)(A_i, B_i) ~ (1 \le i \le M) として与えられます。 ii 番目の関係は「囚人 AiA_i は囚人 BiB_i に対して殺意を持っている」というものです。

これから牢屋敷では、以下の手続きで殺人事件が発生します。

  • 以下の操作を 00 回以上の自由な回数繰り返す。
    • 22 人の生存している囚人 a,ba, b であって、囚人 aa が囚人 bb に対して殺意を持っているものを一つ選ぶ。囚人 bb を殺害し、生存していない状態にする。

殺人事件が発生した後における生存している囚人の集合としてあり得るものの個数を素数 998244353998244353 で割った余りを求めてください。

22 つの「生存している囚人の集合」は、ある囚人が一方の集合では生存しており、他方では生存していないとき(かつそのときに限り)区別します。

TT 個のテストケースが与えられるので、それぞれについて答えてください。

制約

  • 1≤T≤1051 \le T \le 10^5
  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • 0≤M≤2×1050 \le M \le 2 \times 10^5
  • すべてのテストケースにおける NN の総和は 2×1052 \times 10^5 以下
  • すべてのテストケースにおける MM の総和は 2×1052 \times 10^5 以下
  • 1≤Ai,Bi≤N1 \le A_i, B_i \le N
  • Ai≠BiA_i \ne B_i
  • i≠i′i \ne i' ならば (Ai,Bi)≠(Ai′,Bi′)(A_i, B_i) \ne (A_{i'}, B_{i'})
  • 入力される値はすべて整数

入力

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

TT case1\mathrm{case}_1 case2\mathrm{case}_2 ⋮\vdots caseT\mathrm{case}_T

各テストケース caset (1≤t≤T)\mathrm{case}_t ~ (1 \leq t \leq T) は以下の形式で与えられる。

NMN \quad M A1B1A_1 \quad B_1 A2B2A_2 \quad B_2 ⋮\vdots AMBMA_M \quad B_M

出力

TT 行出力せよ。 tt 行目には tt 番目のテストケースについての答えを出力せよ。

サンプル 1

入力

3
3 2
1 2
1 3
13 0
4 5
1 2
3 1
2 3
2 4
1 4

出力

4
1
14

11 番目のテストケースについて、殺人事件が発生した後の囚人の集合としてあり得るものは {1}, {1,2}, {1,3}, {1,2,3}\{1\}, ~ \{1, 2\}, ~ \{1, 3\}, ~ \{1, 2, 3\} の 44 個です。