atcoder#ARC108C. [ARC108C] Keep Graph Connected

[ARC108C] Keep Graph Connected

Score : 500500 points

Problem Statement

Given is an undirected connected graph with NN vertices numbered 11 to NN, and MM edges numbered 11 to MM. The given graph may contain multi-edges but not self loops.

Each edge has an integer label between 11 and NN (inclusive). Edge ii has a label cic_i, and it connects Vertex uiu_i and viv_i bidirectionally.

Snuke will write an integer between 11 and NN (inclusive) on each vertex (multiple vertices may have the same integer written on them) and then keep only the edges satisfying the condition below, removing the other edges.

Condition: Let xx and yy be the integers written on the vertices that are the endpoints of the edge. Exactly one of xx and yy equals the label of the edge.

We call a way of writing integers on the vertices good if (and only if) the graph is still connected after removing the edges not satisfying the condition above. Determine whether a good way of writing integers exists, and present one such way if it exists.

Constraints

  • 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
  • The given graph is connected and has no self-loops.

Input

Input is given from Standard Input in the following format:

NN MM

u1u_1 v1v_1 c1c_1

\vdots

uMu_M vMv_M cMc_M

Output

If there is no good way of writing integers, print No. Otherwise, print NN lines. The ii-th line should contain the integer written on Vertex ii. Any good way of writing integers will be accepted.

3 4
1 2 1
2 3 2
3 1 3
1 3 1
1
2
1
  • We write 11, 22, and 11 on Vertex 11, 22, and 33, respectively.
  • Edge 11 connects Vertex 11 and 22, and its label is 11.- Only the integer written on Vertex 11 equals the label, so this edge will not get removed.
  • Only the integer written on Vertex 11 equals the label, so this edge will not get removed.
  • Edge 22 connects Vertex 22 and 33, and its label is 22.- Only the integer written on Vertex 22 equals the label, so this edge will not be removed.
  • Only the integer written on Vertex 22 equals the label, so this edge will not be removed.
  • Edge 33 connects Vertex 11 and 33, and its label is 33.- Both integers written on the vertices differ from the label, so this edge will be removed.
  • Both integers written on the vertices differ from the label, so this edge will be removed.
  • Edge 44 connects Vertex 11 and 33, and its label is 11.- Both integers written on the vertices equal the label, so this edge will be removed.
  • Both integers written on the vertices equal the label, so this edge will be removed.
  • After Edge 33 and 44 are removed, the graph will still be connected, so this is a good way of writing integers.