#!/usr/bin/env python3

from collections import deque

n, m = map(int, input().split())

adj = [[] for _ in range(n)]
for _ in range(m):
    a, b = map(int, input().split())
    adj[a - 1].append(b - 1)
    adj[b - 1].append(a - 1)

d = n.bit_length() - 1
if not (n == 2 ** d and all(len(v) == d for v in adj)):
    print("no")
    exit()


def bfs(s):
    dist = [-1] * n
    dist[s] = 0
    q = deque([s])
    while q:
        u = q.popleft()
        for v in adj[u]:
            if dist[v] != -1:
                continue
            dist[v] = dist[u] + 1
            q.append(v)
    return dist


dist = [bfs(0)] + [bfs(adj[0][i]) for i in range(d)]
value = [0] * n
for i in range(d):
    for u in range(n):
        for v in adj[u]:
            if dist[0][u] == dist[i + 1][v] and dist[0][u] < dist[0][v]:
                value[v] |= 1 << i

for u in range(n):
    for v in adj[u]:
        if bin(value[u] ^ value[v]).count("1") != 1:
            print("no")
            exit()

print("yes")
