atcoder#CODEFESTIVAL2016FINALG. Zigzag MST

Zigzag MST

配点 : 13001300

問題文

NN 個の頂点からなるグラフがあり、頂点には 0N10 \sim N-1 の番号が付けられています。辺はまだありません。

辺を追加するクエリを QQ 個処理します。 i(1iQ)i (1 \leq i \leq Q) 番目のクエリでは Ai,Bi,CiA_i, B_i, C_i33 つの整数が与えられるので、以下のように辺を無限本追加します。

  • AiA_i 番の頂点と BiB_i 番の頂点をつなぐ、重み CiC_i の無向辺を追加する。
  • BiB_i 番の頂点と Ai+1A_i+1 番の頂点をつなぐ、重み Ci+1C_i+1 の無向辺を追加する。
  • Ai+1A_i+1 番の頂点と Bi+1B_i+1 番の頂点をつなぐ、重み Ci+2C_i+2 の無向辺を追加する。
  • Bi+1B_i+1 番の頂点と Ai+2A_i+2 番の頂点をつなぐ、重み Ci+3C_i+3 の無向辺を追加する。
  • Ai+2A_i+2 番の頂点と Bi+2B_i+2 番の頂点をつなぐ、重み Ci+4C_i+4 の無向辺を追加する。
  • Bi+2B_i+2 番の頂点と Ai+3A_i+3 番の頂点をつなぐ、重み Ci+5C_i+5 の無向辺を追加する。
  • Ai+3A_i+3 番の頂点と Bi+3B_i+3 番の頂点をつなぐ、重み Ci+6C_i+6 の無向辺を追加する。
  • ...

ただし、頂点番号は mod NN で考えます。 たとえば、NN 番とは 00 番のことであり、2N12N-1 番とは N1N-1 番のことです。

例えば、N=16,Ai=7,Bi=14,Ci=1N=16, A_i=7, B_i=14, C_i=1 のときは下図のように辺を追加します。(図では最初の 77 本のみ)

すべての辺を追加した後のグラフの最小全域木に含まれる辺の重みの和を求めて下さい。

制約

  • 2N200,0002 \leq N \leq 200,000
  • 1Q200,0001 \leq Q \leq 200,000
  • 0Ai,BiN10 \leq A_i,B_i \leq N-1
  • 1Ci1091 \leq C_i \leq 10^9

入力

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

NN QQ

A1A_1 B1B_1 C1C_1

A2A_2 B2B_2 C2C_2

:

AQA_Q BQB_Q CQC_Q

出力

最小全域木に含まれる辺の重みの和を出力せよ。

7 1
5 2 1
21

最小全域木は下図のようになります。

多重辺が存在しうることに注意して下さい。

2 1
0 0 1000000000
1000000001

自己ループが存在しうることに注意して下さい。

5 3
0 1 10
0 2 10
0 4 10
42