program acm1908; var g:array[1..1000,1..1000] of boolean; n,m,i,j,x,y:longint; vis:array[1..1000] of boolean; f:boolean; procedure dfs(v:longint); var i:longint; begin vis[v]:=true; for i:=1 to n do if (not vis[i]) and g[v,i] then dfs(i); end; begin readln(n,m); while (n<>0) or (m<>0) do begin fillchar(g,sizeof(g),0); fillchar(vis,sizeof(vis),0); for i:=1 to m do begin readln(x,y); g[x,y]:=true; g[y,x]:=true; end; dfs(1); f:=true; for i:=1 to n do if not vis[i] then begin writeln('NO'); f:=false; break;end; if f then writeln('YES'); readln(n,m); end; end. /************************************************************** Problem: 2191 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/