#include using namespace std; //高速化 struct ponjuice{ponjuice(){cin.tie(0);ios::sync_with_stdio(0);cout<= 0; i--) #define per2(i, n) for(ll i = n-1; i >= 0; i--) #define per3(i, a, b) for(ll i = b-1; i >= a; i--) #define per4(i, a, b, step) for(ll i = b-1; i >= a; i-= step) #define per(...) overload4(__VA_ARGS__, per4, per3, per2, per1)(__VA_ARGS__) //関数 #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() templateinline bool chmax(S& a, T b){return a < b && ( a = b , true);} templateinline bool chmin(S& a, T b){return a > b && ( a = b , true);} //定数 constexpr ll mod = 998244353; constexpr ll minf=-(1<<29); constexpr ll inf=(1<<29); constexpr ll MINF=-(1LL<<60); constexpr ll INF=(1LL<<60); const int dx[4] ={-1, 0, 1, 0}; const int dy[4] ={ 0, 1, 0,-1}; const int dx8[8] ={-1,-1,-1, 0, 1, 1, 1, 0}; const int dy8[8] ={-1, 0, 1, 1, 1, 0,-1,-1}; void solve(); int main() { int t = 1; // cin >> t; while(t--)solve(); } void solve(){ int n,m; cin >> n >> m; vector> g(n); rep(i,0,m) { int a,b; cin >> a >> b; a--,b--; g[a].push_back(b); g[b].push_back(a); } vector od(n, -1); bool ok = true; rep(i,0,n) { if(od[i] == -1) { od[i] = 0; auto dfs = [&](auto&&self, int nw) -> void { for(auto to: g[nw]) { if(od[to] == -1) { od[to] = 1 ^ od[nw]; self(self, to); }else { if(od[to] == od[nw]) { ok = false; } } } }; dfs(dfs, i); } } if(ok) cout << "Yes" << endl; else cout << "No" << endl; }