#define max1 20
#include
using namespace std;
typedef struct node
{
struct node *next;
int vertex;
int status;
}node;
class comp
{
node *ptr[max1];
int m,n,k,top;
int visit[max1];
int stack1[max1];
public:
comp()
{
top=-1;
}
void insert(int,int);
int read_graph();
void bfs(int,int);
void display();
void push(int n);
int pop();
};
int comp::read_graph()
{
int a,b,i;
cin>>this->m;
cin>>this->n;
cin>>this->k;
for(i=1;i<=m;i++)
{
visit[i]=0;
ptr[i]=NULL;
}
for(i=0;i<n;i++)
{
cin>>a>>b;
insert(a,b);
insert(b,a);
}
return this->k;
}
void comp::insert(int l,int m)
{
int flag=0;
node *nNode=new node;
node *temp;
nNode->vertex=m;
nNode->next=NULL;
if(ptr[l]==NULL)
ptr[l]=nNode;
else
{
temp=ptr[l];
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=nNode;
}
}
void comp::bfs(int n,int l)
{
int value;
node *p;
visit[n]++;
do
{
p=ptr[n];
while(p!=NULL && l>0)
{
value=p->vertex;
if(visit[value]==0)
{
push(value);
visit[value]++;
l=l-1;
}
p=p->next;
}
n=pop();
}while(n!=-1);
}
void comp::display()
{
int i;
for(i=1;i<=m;i++)
{
if(visit[i]>1)
{
break;
}
}
if((i-1)==m)
cout<<"\n"<<“yes”;
else
{
cout<<"\nno";
}
}
int comp::pop()
{
int value;
if(top!=-1)
{
value=stack1[top];
top–;
}
else
{
// cout<<"\nempty";
value=-1;
}
return value;
}
void comp::push(int value)
{
if(top!=max1)
{
top=top+1;
stack1[top]=value;
}
else
{
// cout<<"\nfuck";
}
}
int main()
{
int n,v,l,i,j,k;
cin>>n;
comp g[max1];
for(i=0;i<n;i++)
{
k=g[i].read_graph();
for(j=0;j<k;j++)
{
cin>>v>>l;
g[i].bfs(v,l);
}
g[i].display();
}
}