代码
#include <cstdio>
#include <cmath>
using namespace std;
long long n,h,r;
struct ball{
long long x,y,z,fa,di,son[1001],sons;
}a[1001];
bool pd(long long x,long long y){
if(sqrt((a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y)+(a[x].z-a[y].z)*(a[x].z-a[y].z))<=2*r){
return 1;
}
return 0;
}
void hb(long long x,long long y){
for(long long i=0;i<a[y].sons;i++){
a[a[y].son[i]].fa=a[x].fa;
a[a[x].fa].son[a[a[x].fa].sons++]=a[y].son[i];
}
a[y].sons=0;
}
bool js(long long x){
if(a[x].di==1||a[x].z+r>=h){
if(a[x].di==1&&a[x].z+r>=h){
return 1;
}
if(a[x].di==1){
if(a[a[x].fa].z+r>=h){
return 1;
}
for(long long i=0;i<a[a[x].fa].sons;i++){
if(a[a[a[x].fa].son[i]].z+r>=h) return 1;
}
}
else{
if(a[a[x].fa].di==1){
return 1;
}
for(long long i=0;i<a[a[x].fa].sons;i++){
if(a[a[a[x].fa].son[i]].di==1) return 1;
}
}
}
return 0;
}
int main(){
freopen("P3958_5.in","r",stdin);
long long t;
scanf("%d",&t);
for(long long ti=0;ti<t;ti++){
scanf("%lld%lld%lld",&n,&h,&r);
for(long long i=1;i<=n;i++){
scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z);
a[i].fa=i;
if(a[i].z-r<=0){
a[i].di=1;
}
else{
a[i].di=0;
}
}
for(long long i=1;i<=n;i++){
for(long long j=1;j<=n;j++){
if(pd(i,j)){
if(a[j].sons==0){
a[j].fa=a[i].fa;
a[i].son[a[i].sons++]=j;
}
else{
hb(i,j);
}
}
}
}
bool bo=0;
for(long long i=1;i<=n;i++){
if(js(i)){
bo=1;break;
}
}
if(bo){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}