#include <iostream> #include<vector> #include<queue> using namespace std; bool isconnect(vector<vector<bool>> v){ vector<bool>visit(v.size(),false); queue<int>q; q.push(0); visit[0]=true; while(!q.empty()){ int t=q.front(); q.pop(); visit[t]=true; for(int i=0;i<v.size();i++){ if(!visit[i]&&v[t][i]) q.push(i); } } for(int i=0;i<visit.size();i++) if(!visit[i]) return false; return true; } int main() { //用邻接矩阵存,用一维数组存 int m,n;; while(cin>>m>>n){ vector<vector<bool>> v(m,vector<bool>(m,false)); if(m==0&&n==0) continue; while(n-->0){ int i,j; cin>>i>>j; if(i==0||j==0) continue; v[i-1][j-1]=true;v[j-1][i-1]=true; } if(isconnect(v)) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } // 64 位输出请用 printf("%lld")