1 #include <iostream>
2 #include <string.h>
3 using namespace std;
4
5 const int N = 100009;
6 int h[N],e[2*N],ne[2*N],idx;
7 int n,m,color[N];
8 void add(int a,int b)
9 {
10 e[idx] = b;
11 ne[idx] = h[a];
12 h[a] = idx++;
13 }
14
15 bool dfs(int u,int c)
16 {
17 color[u] = c;
18 for(int i = h[u];i != -1;i = ne[i])
19 {
20 int j = e[i];
21 if(!color[j] && !dfs(j,3 - c))
22 return false;
23 else if(color[j] == c)
24 return false;
25 }
26 return true;
27 }
28
29 int main()
30 {
31 memset(h,-1,sizeof h);
32 cin >> n >> m;
33 while(m--)
34 {
35 int a,b;
36 cin >> a >> b;
37 add(a,b);
38 add(b,a);
39 }
40 bool flag = true;
41 for(int i = 1;i <= n;++i)
42 {
43 if(!color[i] && !dfs(i,1))
44 {
45 flag = false;
46 break;
47 }
48 }
49 if(flag)
50 cout << "Yes" << endl;
51 else
52 cout << "No" << endl;
53 return 0;
54 }