#include using namespace std; const int N = 100010, M = N << 1; typedef pair PII; int n, m; int color[N]; // 邻接表 int e[M], h[N], idx, ne[M]; void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx++; } bool bfs(int x) { // 假设 1:黑,2:白,这样方便理解一些 color[x] = 1; queue q; q.push({x, 1}); while (q.size()) { PII t = q.front(); q.pop(); int u = t.first, c = t.second; for (int i = h[u]; ~i; i = ne[i]) { int v = e[i]; if (!color[v]) { color[v] = 3 - c; q.push({v, 3 - c}); } else if (color[v] == c) // 发现冲突 return 0; } } return 1; } int main() { memset(h, -1, sizeof h); cin >> n >> m; int a, b; while (m--) { cin >> a >> b; add(a, b), add(b, a); } int flag = 1; for (int i = 1; i <= n; i++) { if (!color[i]) { if (!bfs(i)) { flag = 0; break; } } } if (flag) puts("Yes"); else puts("No"); return 0; }