atcoder#ARC108C. [ARC108C] Keep Graph Connected

[ARC108C] Keep Graph Connected

配点 : 500500

問題文

11 から NN の番号がついた NN 個の頂点と 11 から MM の番号がついた MM 本の辺からなる連結な無向グラフが与えられます。 このグラフに多重辺は存在するかもしれませんが、自己ループはありません。

このグラフのそれぞれの辺には 11 以上 NN 以下の整数で表されるラベルがついています。 辺 ii はラベル cic_i がついており、頂点 ui,viu_i,v_i を双方向につなぐ辺です。

すぬけ君はそれぞれの頂点に 11 以上 NN 以下の整数を書き込んだのち(頂点に書き込まれた整数に重複があっても構いません)、以下の条件を満たす辺のみを残してそれ以外の辺を取り除くことにしました。

条件:辺の両端の頂点に書き込まれた整数を x,yx,y として、x,yx,y のいずれか一方のみが辺についたラベルと等しい

上記の条件を満たさない辺を取り除いたあとのグラフも連結のままであるような頂点への整数の書き込み方を よい書き込み方 と呼びます。よい書き込み方が存在するかどうかを判定し、存在するならばその一例を示してください。

制約

  • 2N1052 \leq N \leq 10^5
  • N1M2×105N-1 \leq M \leq 2 \times 10^5
  • 1ui,vi,ciN1 \leq u_i,v_i,c_i \leq N
  • 与えられるグラフは連結
  • 与えられるグラフに自己ループはない

入力

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

NN MM

u1u_1 v1v_1 c1c_1

\vdots

uMu_M vMv_M cMc_M

出力

よい書き込み方が存在しないならば No を出力せよ。 存在する場合、NN 行出力せよ。ii 行目には頂点 ii に書き込む整数を出力せよ。 この書き込み方がよい書き込み方ならば正解となる。

3 4
1 2 1
2 3 2
3 1 3
1 3 1
1
2
1
  • 頂点 1,2,31,2,3 にそれぞれ 1,2,11,2,1 を書き込みます。
  • 11 は頂点 1,21,2 をつないでおり、ラベルが 11 です。- 頂点 11 に書き込まれた整数のみが辺についたラベルと等しいため辺 11 は取り除かれません。
  • 頂点 11 に書き込まれた整数のみが辺についたラベルと等しいため辺 11 は取り除かれません。
  • 22 は頂点 2,32,3 をつないでおり、ラベルが 22 です。- 頂点 22 に書き込まれた整数のみが辺についたラベルと等しいため辺 22 は取り除かれません。
  • 頂点 22 に書き込まれた整数のみが辺についたラベルと等しいため辺 22 は取り除かれません。
  • 33 は頂点 1,31,3 をつないでおり、ラベルが 33 です。- どちらの頂点に書き込まれた整数も辺についたラベルと異なるため辺 33 は取り除かれます。
  • どちらの頂点に書き込まれた整数も辺についたラベルと異なるため辺 33 は取り除かれます。
  • 44 は頂点 1,31,3 をつないでおり、ラベルが 11 です。- どちらの頂点に書き込まれた整数も辺についたラベルと等しいため辺 44 は取り除かれます。
  • どちらの頂点に書き込まれた整数も辺についたラベルと等しいため辺 44 は取り除かれます。
  • 3,43,4 が取り除かれたあともグラフは連結なので、この書き込み方はよい書き込み方です。