can anyone help me?
I wrote it and I'm sure that it's right but it gets RTE and sometimes WA
please help me
that's my code
var a:array[0..20002]of longint;
adj:array[0..10002,0..20002]of longint;
vis:array[0..20002]of integer;
m,n,cnt,i,k,l,v:longint;
procedure dfs(u:integer);
begin
if (vis[u]=1)then exit;
cnt:=cnt+1;
a[cnt]:=u; vis[u]:=1;
for v:=1 to adj[u,0] do
dfs(adj[u,v]);
end;
begin
cnt:=0;
readln(n,m);
for i:=1 to m do
begin
readln(k,l);
adj[k,0]:=adj[k,0]+1;
adj[k,adj[k,0]]:=l;
adj[l,0]:=adj[l,0]+1;
adj[l,adj[l,0]]:=k;
end;
dfs(1);
if (cnt=n)and(n-m=1) then writeln('YES') else writeln('NO');
end.