using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using static System.Console;
using System.Numerics;
using System.Text.RegularExpressions;
using System.Runtime.Serialization.Formatters.Binary;

namespace atcorder2
{
    [Serializable]
    static class  Program
    {
        public static long Read()
        {
            return long.Parse(Console.ReadLine());
        }

        public static long[] Reads()
        {
            return Console.ReadLine().Split().Select(long.Parse).ToArray();
        }


        public static long Gcd(long x,long y)
        {
            if (x < y) Gcd(y, x);
            while (y > 0)
            {
                var z = x;
                x = y;
                y = z % y;
            }
            return x;
        }

        public static long Lcm(long x,long y)
        {
            return x * y / Lcm(x, y);
        }

        public static bool IsLowercaseAlphabet(char target)
        {
            return new Regex("^[a-z]+$").IsMatch(target.ToString());
        }

        public static T DeepCopy<T>(this T src)
        {
            using (var memoryStream = new MemoryStream())
            {
                var binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(memoryStream, src);
                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                return (T)binaryFormatter.Deserialize(memoryStream);
            }
        }


        public static bool Prime(long n)
        {
            if (n < 2) return false;
            else if (n == 2) return true;
            else if (n % 2 == 0) return false;

            for (int i = 3; i <=Math.Sqrt(n); i++)
            {
                if (n % i == 0) return false;
            }
            return true;
        }
        


        static void Main(string[] args)
        {
            var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            Console.SetOut(sw);


            var q = Reads();
            var n = q[0];
            var m = q[1];
            var r = new bool[n];
            

            var w = new List<long>[n];
            for (int i = 0; i < n; i++)
            {
                w[i] = new List<long>();
            }
            for (int i = 0; i < m; i++)
            {
                q = Reads();
                w[q[0] - 1].Add(q[1] - 1);
                w[q[1] - 1].Add(q[0] - 1);
            }
            
            WriteLine();
            var que = new Queue<long>();
            que.Enqueue(0);
            var ans = new long[n];
         

            var memo = new Dictionary<long,long>();
            while (que.Count>0)
            {
                var s = que.Dequeue();
              
                if (!memo.ContainsKey(s))
                    memo.Add(s, 1);
                else
                    continue;
              
                r[s] = true;
                for (int i = 0; i < w[s].Count; i++)
                {
                    que.Enqueue(w[s][i]);
                 
                    if (ans[w[s][i]] == 0)
                        ans[w[s][i]] = s + 1;
                
                       
                }

            }
            var f = true;
            for (int i = 0; i < n; i++)
            {
                if (r[i] == false) f = true;
            }
            if (f)
            {
                WriteLine("Yes");
                for (int i = 1; i < n; i++)
                {               
                    WriteLine(ans[i]);
                }
            }
            else WriteLine("No");
            
           

           


            Console.Out.Flush();
        }
    }
}



Measured memory_bytes: 51380