output_description: If there is no way to place signposts satisfying the objective, print `No`.
  
  Otherwise, print N lines. The first line should contain `Yes`, and the i-th
  line (2 \leq i \leq N) should contain the integer representing the room
  indicated by the signpost in Room i.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      A_1 B_1
      :
      A_M B_M
attempt: from collections import deque
  
  
  def show_2d_array(array):
      [print(a) for a in array]
  
  
  N, M = map(int, input().split())
  
  cave = [[] for i in range(N)]
  for i in range(M):
      a, b = map(int, input().split())
      cave[a - 1].append(b - 1)
      cave[b - 1].append(a - 1)
  
  
  # show_2d_array(cave)
  
  
  def bfs(tree, p):
      seen = [False] * len(tree)
      queue = deque((p,))
      depth = [0] * N
      depth[p] = 0
      current_depth = depth[p]
      while len(queue) > 0:
          # print(queue)
          q = queue.popleft()
          seen[q] = True
          # print(q)
          current_depth += 1
          for v in tree[q]:
              if not seen[v]:
                  depth[v] = current_depth
                  queue.append(v)
                  seen[v] = True
  
      # print(depth)
  
      return depth
  
  
  depth = bfs(cave, 0)
  
  sign = [0] * N
  
  ans = "Yes"
  for i in range(1, N):
      current = i
      found = False
      while not found:
          next = -1
          for j in cave[current]:
              if depth[j] == depth[current] - 1:
                  if sign[current] <= 0:
                      next = j
                      sign[current] = next
                      break
                  else:
                      next = sign[current]
                      break
          if next < 0:
              ans = "No"
              break
  
          current = next
          if current == 0:
              found = True
  
  print(ans)
  if ans == "Yes":
      [print(s + 1) for s in sign[1:]]
  
problem_description: Statement
  
  There is a cave.
  
  The cave has N rooms and M passages. The rooms are numbered 1 to N, and the
  passages are numbered 1 to M. Passage i connects Room A_i and Room B_i
  bidirectionally. One can travel between any two rooms by traversing passages.
  Room 1 is a special room with an entrance from the outside.
  
  It is dark in the cave, so we have decided to place a signpost in each room
  except Room 1. The signpost in each room will point to one of the rooms
  directly connected to that room with a passage.
  
  Since it is dangerous in the cave, our objective is to satisfy the condition
  below for each room except Room 1.
  
    * If you start in that room and repeatedly move to the room indicated by the signpost in the room you are in, you will reach Room 1 after traversing the minimum number of passages possible.
  
  Determine whether there is a way to place signposts satisfying our objective,
  and print one such way if it exists.
samples: [{"input": "4 4\n    1 2\n    2 3\n    3 4\n    4 2", "output": "Yes\n    1\n    2\n    2\n    \n\nIf we place the signposts as described in the sample output, the following\nhappens:\n\n  * Starting in Room 2, you will reach Room 1 after traversing one passage: (2) \\to 1. This is the minimum number of passages possible.\n  * Starting in Room 3, you will reach Room 1 after traversing two passages: (3) \\to 2 \\to 1. This is the minimum number of passages possible.\n  * Starting in Room 4, you will reach Room 1 after traversing two passages: (4) \\to 2 \\to 1. This is the minimum number of passages possible.\n\nThus, the objective is satisfied.\n\n* * *"}, {"input": "6 9\n    3 4\n    6 1\n    2 4\n    5 3\n    4 6\n    1 5\n    6 2\n    4 5\n    5 6", "output": "Yes\n    6\n    5\n    5\n    1\n    1\n    \n\nIf there are multiple solutions, any of them will be accepted."}]