G - Source to Sink 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 100 点

問題文

N 頂点 M 辺の単純有向グラフ G があります。 頂点には 1 から N までの番号が付けられていて、i 本目の辺は頂点 u_i から頂点 v_i への有向辺です。

あなたは以下の操作を何回でも行うことができます。

  • G の入次数 0 の頂点 v を選び、v を端点とするすべての辺の向きを反転する。

操作を行うことができる最大の回数を求めてください。ただし、操作を無限に続けることができる場合、その旨を報告してください。

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

制約

  • 1 \leq T \leq 5 \times 10^4
  • 2 \leq N \leq 10^5
  • 1 \leq M \leq \min(N(N-1), 2 \times 10^5)
  • 1 \leq u_i, v_i \leq N
  • u_i \neq v_i
  • (u_i,v_i) \neq (u_j,v_j) \ (i \neq j)
  • すべてのテストケースに対する N の総和は 10^5 以下
  • すべてのテストケースに対する M の総和は 2 \times 10^5 以下
  • 入力される数値はすべて整数

入力

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

T
\mathrm{case}_1
\mathrm{case}_2
\vdots
\mathrm{case}_T

各テストケースは以下の形式で与えられる。

N M
u_1 v_1
u_2 v_2
\vdots
u_M v_M

出力

T 行出力せよ。t 行目には t 個目のテストケースの答えを出力せよ。

各テストケースについて、操作を行うことができる最大の回数を出力せよ。ただし、操作を無限に続けることができる場合、-1 を出力せよ。


入力例 1

4
5 6
1 3
2 4
2 5
3 4
4 1
5 1
2 1
1 2
3 2
1 2
2 1
6 6
1 2
2 3
3 4
4 5
5 6
6 1

出力例 1

2
-1
-1
0

1 つ目のテストケースについて、以下のように操作することで、2 回操作を行うことができます。

  • 頂点 2 に対して操作を行う。2, 3 番目の辺の向きが反転する。
  • 頂点 5 に対して操作を行う。3, 6 番目の辺の向きが反転する。

3 回以上操作を行うことはできないので、2 を出力します。

2 つ目のテストケースについて、頂点 1 、頂点 2 に対して交互に操作を行うことで、無限に操作を続けることができます。

3 つ目のテストケースについて、頂点 3 に対して何回でも操作を行うことができます。

4 つ目のテストケースについて、1 回も操作を行うことができません。