如题
#include<bits/stdc++.h>
using namespace std;
struct aaa{
long long x;
long long y;
long long z;
}l[1005];
int cmp(aaa xx,aaa yy){
return xx.z<yy.z;
}
long long T,n,h,r,cnt=0;
long long qi[1005];
bool ding[1005],fin=false,zz[1005];
bool di(int i,int j){
double aa=sqrt((l[i].x-l[j].x)*(l[i].x-l[j].x)+(l[i].y-l[j].y)*(l[i].y-l[j].y)+(l[i].z-l[j].z)*(l[i].z-l[j].z));
if(aa<=2*r) return true;
return false;
}
int zou(int x){
zz[x]=true;
if(fin) return 0;
if(ding[x]){
fin=true;
return 0;
}
for(int i=1;i<=n;i++){
if(!zz[i]&&di(x,i)){
zou(i);
}
}
zz[x]=false;
return 0;
}
int main(){
cin>>T;
for(int cc=1;cc<=T;cc++){
cnt=0;
fin=false;
memset(ding,false,sizeof(ding));
memset(qi,0,sizeof(qi));
memset(zz,false,sizeof(zz));
cin>>n>>h>>r;
for(int i=1;i<=n;i++){
cin>>l[i].x>>l[i].y>>l[i].z;
}
for(int i=1;i<=n;i++){
if(h<=r+l[i].z){
ding[i]=true;
}
if(l[i].z<=r){
cnt++;
qi[cnt]=i;
}
}
for(int i=1;i<=cnt;i++){
zou(qi[i]);
if(fin){
cout<<"Yes"<<endl;
break;
}
}
if(!fin) cout<<"No"<<endl;
}
return 0;
}