#include<bits/stdc++.h>
using namespace std;

vector<long long> a[100005];
long long n,m;
long long visited[100005];
bool check=true;

void bfs(long long x, vector<long long> a[], long long visited[], bool &check)
{
    queue<long long> q;

    q.push(x);
    visited[x]=1;

    while (!q.empty())
    {
        long long u = q.front();
        q.pop();

        for (long long v : a[u])
        {
            if (visited[v]==0)
            {
                visited[v] = 3 - visited[u];
                q.push(v);
            }
            else if (visited[v]==visited[u])
            {
                check=false;
                return;
            }
        }
    }
}

void input()
{
    cin>>n>>m;

    for (long long i=1;i<=m;i++)
    {
        long long u,v;

        cin>>u>>v;

        a[u].push_back(v);
        a[v].push_back(u);
    }
}

void solve()
{
    for (long long i=1;i<=n;i++)
    {
        if (visited[i]==0)
        {
            bfs(i,a,visited,check);

            if (!check)
            {
                cout<<"NO";
                return;
            }
        }
    }

    cout<<"YES";
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    input();
    solve();
}
