#include #include #include using namespace std; struct Dsu { vector c; int n; Dsu (int n_) { n = n_; c = vector (n); iota (c.begin (), c.end (), 0); } bool unite (int u, int v) { if (c[u] == c[v]) return false; int prev = c[u]; for (int i = 0; i < n; i++) if (c[i] == prev) c[i] = c[v]; return true; } }; int main () { int n, m; cin >> n >> m; Dsu dsu (n); int res = n; for (int j = 0; j < m; j++) { int u, v; cin >> u >> v; u -= 1; v -= 1; res -= dsu.unite (u, v); } cout << ((res == 1) ? "YES" : "NO") << endl; return 0; }