atcoder#AGC045E. [AGC045E] Fragile Balls

[AGC045E] Fragile Balls

配点 : 12001200

問題文

11 から NN までの番号の付いた NN 個の箱があります. また,11 から MM までの番号の付いた MM 個のボールがあります. 現在,ボール ii は箱 AiA_i に入っています.

あなたは,以下の操作を行えます.

  • 現在ボールが 22 個以上入っている箱を 11 つ選ぶ. そして,その箱からボールを 11 つ選んで取り出し,別の箱に入れる.

ただし,ボールは非常に壊れやすいため,ボール ii は合計で CiC_i 回より多く移動させることはできません. 逆に,ボールが壊れない限り,何度でもボールの移動は行なえます.

あなたの目標は,すべての ii (1iM1 \leq i \leq M)について,ボール ii が箱 BiB_i に入っているようにすることです. この目的が達成可能かどうか判定してください. また可能な場合は,目標を達成するのに必要な操作回数の最小値を求めてください.

制約

  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • 1Ai,BiN1 \leq A_i,B_i \leq N
  • 1Ci1051 \leq C_i \leq 10^5
  • 目標とする状態において,どの箱にも 11 つ以上のボールが入っている. つまり,すべての ii (1iN1 \leq i \leq N) について,Bj=iB_j=i を満たす jj が存在する.

入力

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

NN MM

A1A_1 B1B_1 C1C_1

A2A_2 B2B_2 C2C_2

\vdots

AMA_M BMB_M CMC_M

出力

目標が達成不可能な場合は 1-1 を,達成可能な場合は必要な操作回数の最小値を出力せよ.

3 3
1 2 1
2 1 1
1 3 2
3

以下のように 33 回の操作を行えば良いです.

  • 11 からボール 11 を取り出し,箱 22 に入れる.
  • 22 からボール 22 を取り出し,箱 11 に入れる.
  • 11 からボール 33 を取り出し,箱 33 に入れる.
2 2
1 2 1
2 1 1
-1
5 5
1 2 1
2 1 1
1 3 2
4 5 1
5 4 1
6
1 1
1 1 1
0