#include typedef struct Edge { struct Edge *next; int v; } edge; int main() { int i, n, m, u, w; edge *adj[101] = {}, e[10001], *p; scanf("%d %d", &n, &m); for (i = 0; i < m; i++) { scanf("%d %d", &u, &w); e[i*2].v = w; e[i*2+1].v = u; e[i*2].next = adj[u]; e[i*2+1].next = adj[w]; adj[u] = &(e[i*2]); adj[w] = &(e[i*2+1]); } int r, color[101] = {}, q[101], head, tail; for (r = 1; r <= n; r++) { if (color[r] != 0) continue; color[r] = 1; q[0] = r; for (head = 0, tail = 1; head < tail; head++) { u = q[head]; for (p = adj[u]; p != NULL; p = p->next) { w = p->v; if (color[w] == 0) { color[w] = -color[u]; q[tail++] = w; } else if (color[w] == color[u]) { printf("No\n"); return 0; } } } } printf("Yes\n"); fflush(stdout); return 0; }