#include using namespace std; #ifdef LOCAL #include "settings/debug.cpp" #else #define Debug(...) void(0) #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, m; cin >> n >> m; vector Graph(n, vector(0)); rep(_, m) { int u, v; cin >> u >> v; --u; --v; Graph[u].push_back(v); Graph[v].push_back(u); } vector col(n, -1); bool is_bipartite = true; rep(i, n) { if (col[i] != -1) continue; queue q; q.push(i); col[i] = 0; while (!q.empty()) { int u = q.front(); q.pop(); for (int v : Graph[u]) { if (col[v] == -1) { col[v] = 1 - col[u]; q.push(v); } else if (col[v] == col[u]) { is_bipartite = false; } } } } cout << (is_bipartite ? "Yes" : "No") << '\n'; return 0; }