#include<bits/stdc++.h>
using namespace std;
bool bfs(vector<int> adj[],int start,int n)
{
bool visited[n+1];
queue<int> q;
q.push(start);
memset(visited,false,sizeof(visited));
while(!q.empty())
{
int panty=q.front();
q.pop();
visited[panty]=true;
for(int i=0;i<adj[panty].size();i++)
{
if((visited[adj[panty][i]])==false)
{
q.push(adj[panty][i]);
}
}
}
int ekka=0;
for(int i=0;i<n;i++)
{
if(!visited[i])
{
ekka=1;
break;
}
}
if(ekka=0)
return false;
else
return true;
}
int main()
{
int n,m;
cin>>n>>m;
vector<int> adj[n+1];
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
if( bfs(adj,1,n))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgYmZzKHZlY3RvcjxpbnQ+IGFkaltdLGludCBzdGFydCxpbnQgbikKewoJYm9vbCB2aXNpdGVkW24rMV07CglxdWV1ZTxpbnQ+IHE7CglxLnB1c2goc3RhcnQpOwoJbWVtc2V0KHZpc2l0ZWQsZmFsc2Usc2l6ZW9mKHZpc2l0ZWQpKTsKCXdoaWxlKCFxLmVtcHR5KCkpCgl7CgkJaW50IHBhbnR5PXEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCXZpc2l0ZWRbcGFudHldPXRydWU7CgkJZm9yKGludCBpPTA7aTxhZGpbcGFudHldLnNpemUoKTtpKyspCgkJewoJCQlpZigodmlzaXRlZFthZGpbcGFudHldW2ldXSk9PWZhbHNlKQoJCQl7CgkJCQoJCQlxLnB1c2goYWRqW3BhbnR5XVtpXSk7CgkJCQoJCX0KCQl9CgkJCgl9CglpbnQgZWtrYT0wOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlpZighdmlzaXRlZFtpXSkKCQl7CgkJCWVra2E9MTsKCQkJYnJlYWs7CgkJfQoJCQoJfQoJaWYoZWtrYT0wKQoJcmV0dXJuIGZhbHNlOwoJZWxzZQoJcmV0dXJuIHRydWU7Cn0KaW50IG1haW4oKQp7CglpbnQgbixtOwoJY2luPj5uPj5tOwoJdmVjdG9yPGludD4gYWRqW24rMV07Cglmb3IoaW50IGk9MDtpPG07aSsrKQoJewoJCWludCB4LHk7CgkJY2luPj54Pj55OwoJCWFkalt4XS5wdXNoX2JhY2soeSk7CgkJYWRqW3ldLnB1c2hfYmFjayh4KTsKCX0KaWYoCWJmcyhhZGosMSxuKSkKY291dDw8IllFUyI8PGVuZGw7CmVsc2UKY291dDw8Ik5PIjw8ZW5kbDsKCgkKfQ==