#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void fast()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
const int n=8e+5;
int t,s;
vector<int>v[n];
int visited[n];
void dfs(int node)
{
visited[node];
for(int child:v[node])
{
if(!visited[child])dfs(child);
}
}
int main()
{
fast();
cin>>t>>s;
for(int i=0;i<s;i++)
{
int a,b;
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
int c=0;
for(int i=1; i<=t; i++)
{
if(!visited[i])
{
c++;
dfs(i);
}
}
if(c==1&&s==(t-1))cout<<"YES";
else cout<<"NO";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdm9pZCBmYXN0KCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7Cn0KY29uc3QgaW50IG49OGUrNTsKaW50IHQsczsKdmVjdG9yPGludD52W25dOwppbnQgdmlzaXRlZFtuXTsKdm9pZCBkZnMoaW50IG5vZGUpCnsKICAgIHZpc2l0ZWRbbm9kZV07CiAgICBmb3IoaW50IGNoaWxkOnZbbm9kZV0pCiAgICB7CiAgICAgICAgaWYoIXZpc2l0ZWRbY2hpbGRdKWRmcyhjaGlsZCk7CiAgICB9Cgp9CgppbnQgbWFpbigpCnsKICAgIGZhc3QoKTsKICAgIGNpbj4+dD4+czsKICAgIGZvcihpbnQgaT0wO2k8cztpKyspCiAgICB7CiAgICAgICAgaW50IGEsYjsKICAgICAgICBjaW4+PmE+PmI7CiAgICAgICAgdlthXS5wdXNoX2JhY2soYik7CiAgICAgICAgdltiXS5wdXNoX2JhY2soYSk7CiAgICB9CiAgICBpbnQgYz0wOwogICAgZm9yKGludCBpPTE7IGk8PXQ7IGkrKykKICAgIHsKICAgICAgICBpZighdmlzaXRlZFtpXSkKICAgICAgICB7CiAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgZGZzKGkpOwogICAgICAgIH0KICAgIH0KICAgIGlmKGM9PTEmJnM9PSh0LTEpKWNvdXQ8PCJZRVMiOwogICAgZWxzZSBjb3V0PDwiTk8iOwoKICAgIHJldHVybiAwOwp9