#define max1 10000000
#include
#include<stdio.h>
using namespace std;
typedef struct node
{
struct node *next;
int vertex;
int status;
}node;
class comp
{
node *ptr[max1];
long long int m,n,k,top;
int visit[max1];
int stack1[max1];
public:
comp()
{
top=-1;
}
void insert(long long int,long long int);
int read_graph();
void bfs(long long int,long long int);
void display();
void push(long long int n);
long long int pop();
};
int comp::read_graph()
{
long long 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(long long int l,long long 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(long long int n,long long 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";
}
}
long long int comp::pop()
{
long long int value;
if(top!=-1)
{
value=stack1[top];
top–;
}
else
{
// cout<<"\nempty";
value=-1;
}
return value;
}
void comp::push(long long int value)
{
if(top!=max1)
{
top=top+1;
stack1[top]=value;
}
else
{
// cout<<"\nfuck";
}
}
int main()
{
long long int v,l;
int i,j,k,n;
fflush(stdin);
cin>>n;
//cout<<"\nyes";
comp g[11];
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);
}
}
for(i=0;i<n;i++)
{
g[i].display();
}
}