#include <iostream>
#include<vector>
using namespace std;
int n, m,cnt;
int a[150005], b[150005];
int daxet[150005];
vector <int> adj[150005];
vector <int> f[150005];
void dfs(int v){
daxet[v] = 1;
f[cnt].push_back(v);
for (int i = 0; i < adj[v].size(); i++){
if (!daxet[adj[v][i]]){
dfs(adj[v][i]);
}
}
}
int main(){
cin >> n >> m;
for (int i = 1; i <= m; i++){
cin >> a[i] >> b[i];
adj[a[i]].push_back(b[i]);
adj[b[i]].push_back(a[i]);
}
for (int i = 1; i <= n; i++){
if (!daxet[i]){
cnt++;
dfs(i);
}
}
int sz;
for (int i = 1; i <= cnt; i++){
sz = f[i].size();
for (int j = 0; j < sz; j++){
if (adj[f[i][j]].size() != sz-1){
cout << "NO";
return 0;
}
}
}
cout << "YES";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgbSxjbnQ7CgppbnQgYVsxNTAwMDVdLCBiWzE1MDAwNV07CmludCBkYXhldFsxNTAwMDVdOwp2ZWN0b3IgPGludD4gYWRqWzE1MDAwNV07CnZlY3RvciA8aW50PiBmWzE1MDAwNV07Cgp2b2lkIGRmcyhpbnQgdil7CglkYXhldFt2XSA9IDE7CglmW2NudF0ucHVzaF9iYWNrKHYpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBhZGpbdl0uc2l6ZSgpOyBpKyspewoJCWlmICghZGF4ZXRbYWRqW3ZdW2ldXSl7CgkJCWRmcyhhZGpbdl1baV0pOwoJCX0KCX0KfQoKaW50IG1haW4oKXsKCWNpbiA+PiBuID4+IG07Cglmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspewoJCWNpbiA+PiBhW2ldID4+IGJbaV07CgkJYWRqW2FbaV1dLnB1c2hfYmFjayhiW2ldKTsKCQlhZGpbYltpXV0ucHVzaF9iYWNrKGFbaV0pOwoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQlpZiAoIWRheGV0W2ldKXsKCQkJY250Kys7CgkJCWRmcyhpKTsKCQl9Cgl9CglpbnQgc3o7Cglmb3IgKGludCBpID0gMTsgaSA8PSBjbnQ7IGkrKyl7CgkJc3ogPSBmW2ldLnNpemUoKTsKCQlmb3IgKGludCBqID0gMDsgaiA8IHN6OyBqKyspewoJCQlpZiAoYWRqW2ZbaV1bal1dLnNpemUoKSAhPSBzei0xKXsKCQkJCWNvdXQgPDwgIk5PIjsKCQkJCXJldHVybiAwOwoJCQl9CgkJfQoJfQoJY291dCA8PCAiWUVTIjsKCXJldHVybiAwOwoJCn0=