def dfs(start):
global f
for j in V[start]:
if colored[j]==0:
if colored[start]==1:
colored[j]=2
if colored[start]==2:
colored[j]=1
dfs(j)
if colored[j]!=0:
if colored[j]==colored[start]:
f="NO"
n, m = map(int, input().split())
f="YES"
colored=[0]*(n)
Visited = [False]*(n)
V = [set() for i in range(n)]
for i in range(m):
u, v = map(int, input().split())
u=u-1
v=v-1
V[u].add(v)
V[v].add(u)
for i in range(n):
if colored[i]==0:
colored[i]=1
dfs(i)
print(f)