#include<bits/stdc++.h>
using namespace std;
class Graph
{
int v;
list<int> *adj;
public:
Graph(int v);
void addEdge(int v,int w);
void DFS(int s);
};
Graph::Graph(int v)
{
this->v=v;
adj=new list<int>[v];
}
void Graph:: addEdge(int v,int w)
{
adj[v].push_back(w);
adj[w].push_back(v);
}
void Graph:: DFS(int s)
{
int fvar=s;
int flag=1;
vector<bool> visited(v,false);
stack<int> stk;
vector<int>parent(v,-1);
stk.push(s);
while(!stk.empty() && flag!=0){
s=stk.top();
stk.pop();
if(!visited[s]){
visited[s]=true;
}
list<int>:: iterator it;
for(it=adj[s].begin();it!=adj[s].end();it++){
if(!visited[*it]){
parent[*it]=s;
stk.push(*it);
}
if(visited[*it] && parent[s]!=*it){
flag=0;
break;
}
}
}
vector<bool>:: iterator it1;
for(it1=visited.begin();it1!=visited.end();it1++){
if(visited[*it1]==false){
flag=0;
break;
}
}
if(flag==0)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
int main()
{
int i,m,x,y,v;
cin>>v>>m;
Graph g(v);
for(i=1;i<=m;i++){
cin>>x>>y;
g.addEdge(x-1,y-1);
}
g.DFS(x-1);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgR3JhcGgKewogICAgaW50IHY7CiAgICBsaXN0PGludD4gKmFkajsKcHVibGljOgogICAgR3JhcGgoaW50IHYpOwogICAgdm9pZCBhZGRFZGdlKGludCB2LGludCB3KTsKICAgIHZvaWQgREZTKGludCBzKTsKfTsKR3JhcGg6OkdyYXBoKGludCB2KQp7CiAgICB0aGlzLT52PXY7CiAgICBhZGo9bmV3IGxpc3Q8aW50Plt2XTsKfQp2b2lkIEdyYXBoOjogYWRkRWRnZShpbnQgdixpbnQgdykKewogICAgYWRqW3ZdLnB1c2hfYmFjayh3KTsKICAgIGFkalt3XS5wdXNoX2JhY2sodik7Cn0Kdm9pZCBHcmFwaDo6IERGUyhpbnQgcykKewogICAgaW50IGZ2YXI9czsKICAgIGludCBmbGFnPTE7CiAgICB2ZWN0b3I8Ym9vbD4gdmlzaXRlZCh2LGZhbHNlKTsKICAgIHN0YWNrPGludD4gc3RrOwogICAgdmVjdG9yPGludD5wYXJlbnQodiwtMSk7CiAgICBzdGsucHVzaChzKTsKICAgIHdoaWxlKCFzdGsuZW1wdHkoKSAmJiBmbGFnIT0wKXsKICAgICAgICBzPXN0ay50b3AoKTsKICAgICAgICBzdGsucG9wKCk7CiAgICAgICAgaWYoIXZpc2l0ZWRbc10pewogICAgICAgICAgICB2aXNpdGVkW3NdPXRydWU7CiAgICAgICAgfQogICAgICAgIGxpc3Q8aW50Pjo6IGl0ZXJhdG9yIGl0OwogICAgICAgIGZvcihpdD1hZGpbc10uYmVnaW4oKTtpdCE9YWRqW3NdLmVuZCgpO2l0KyspewoKICAgICAgICAgICAgaWYoIXZpc2l0ZWRbKml0XSl7CiAgICAgICAgICAgICAgICBwYXJlbnRbKml0XT1zOwogICAgICAgICAgICAgICAgc3RrLnB1c2goKml0KTsKICAgICAgICAgICAgfQogICAgICAgIGlmKHZpc2l0ZWRbKml0XSAmJiBwYXJlbnRbc10hPSppdCl7CiAgICAgICAgICAgIGZsYWc9MDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHZlY3Rvcjxib29sPjo6IGl0ZXJhdG9yIGl0MTsKICAgIGZvcihpdDE9dmlzaXRlZC5iZWdpbigpO2l0MSE9dmlzaXRlZC5lbmQoKTtpdDErKyl7CiAgICAgICAgaWYodmlzaXRlZFsqaXQxXT09ZmFsc2UpewogICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmKGZsYWc9PTApCiAgICAgICAgY291dDw8Ik5PIjw8ZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0PDwiWUVTIjw8ZW5kbDsKfQppbnQgbWFpbigpCnsKICAgIGludCBpLG0seCx5LHY7CiAgICBjaW4+PnY+Pm07CiAgICBHcmFwaCBnKHYpOwogICAgZm9yKGk9MTtpPD1tO2krKyl7CiAgICAgICAgY2luPj54Pj55OwogICAgICAgIGcuYWRkRWRnZSh4LTEseS0xKTsKICAgIH0KCiAgICBnLkRGUyh4LTEpOwogICAgcmV0dXJuIDA7Cn0KCgoKCgoKCgoKCg==