#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
bool vis[1000000];
void dfs(int u){
vis[u]=true;
for(int i=0;i<g[u].size();++i){
int aux=g[u][i];
if(vis[aux]==false){
dfs(aux);
}
}
}
int main()
{
int n; cin>> n;
for(int i=0;i<n;++i){
int nodos,aristas,x,y;
cin>> nodos >> aristas;
g.assign(nodos+5, vector<int> ());
memset(vis,false,sizeof vis);
for(int k=0;k<aristas;++k){
cin>> x >> y;
x--; y--;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(0);
bool ok=false;
for(int i=0;i<nodos;++i){
if(vis[i]==false){
ok=true;
}
}
if(ok==true)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8dmVjdG9yPGludD4gPiBnOwpib29sIHZpc1sxMDAwMDAwXTsKdm9pZCBkZnMoaW50IHUpewogICB2aXNbdV09dHJ1ZTsKICAgZm9yKGludCBpPTA7aTxnW3VdLnNpemUoKTsrK2kpewogICAgICAgaW50IGF1eD1nW3VdW2ldOwogICAgICAgaWYodmlzW2F1eF09PWZhbHNlKXsKICAgICAgICAgICBkZnMoYXV4KTsKICAgICAgIH0KICAgfQp9CmludCBtYWluKCkKewogICAgaW50IG47IGNpbj4+IG47CiAgICBmb3IoaW50IGk9MDtpPG47KytpKXsKICAgICAgICBpbnQgbm9kb3MsYXJpc3Rhcyx4LHk7CiAgICAgICAgY2luPj4gbm9kb3MgPj4gYXJpc3RhczsKICAgICAgICBnLmFzc2lnbihub2Rvcys1LCB2ZWN0b3I8aW50PiAoKSk7CiAgICAgICAgbWVtc2V0KHZpcyxmYWxzZSxzaXplb2YgdmlzKTsKICAgICAgICBmb3IoaW50IGs9MDtrPGFyaXN0YXM7KytrKXsKICAgICAgICAgICAgY2luPj4geCA+PiB5OwogICAgICAgICAgICB4LS07IHktLTsKICAgICAgICAgICAgZ1t4XS5wdXNoX2JhY2soeSk7CiAgICAgICAgICAgIGdbeV0ucHVzaF9iYWNrKHgpOwogICAgICAgIH0KICAgICAgICBkZnMoMCk7CiAgICAgICAgYm9vbCBvaz1mYWxzZTsKICAgICAgICBmb3IoaW50IGk9MDtpPG5vZG9zOysraSl7CiAgICAgICAgICAgIGlmKHZpc1tpXT09ZmFsc2UpewogICAgICAgICAgICAgICAgb2s9dHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihvaz09dHJ1ZSljb3V0PDwiTk8iPDxlbmRsOwogICAgICAgIGVsc2UgY291dDw8IllFUyI8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=