输入什么都输出NO
#include<iostream>
#include<cmath>
using namespace std;
int set[2000000],m,n,r,height,bott[100000],topp[100000],k=1,l=1,ans[1000000];
bool pd=false;
struct node
{
int x,y,z,fa;
bool top=false,bot=false;
}a[1000000];
bool pdbot(int y,int r)
{
return y<=r?true:false;
}
bool pdtop(int h,int y,int r)
{
return h-y<=r?true:false;
}
bool pdjc(int a,int r)
{
return a<=2*r?true:false;
}
int dist(int a,int b,int c,int d,int e,int f)
{
return sqrt(pow(a-d,2)+pow(b-e,2)+pow(c-f,2));
}
int find(int x)
{
if(a[x].fa==x)
{
return x;
}
return a[x].fa=find(a[x].fa);
}
void merge(int x,int y)
{
int xx,yy;
xx=find(x);yy=find(y);
if(xx!=yy) a[yy].fa=xx;
}
int main()
{
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>n>>height>>r;
for(int i=1;i<=n;i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;
a[i].fa=i;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(pdjc(dist(a[i].x,a[i].y,a[i].z,a[j].x,a[j].y,a[j].z),r))
{
merge(a[i].fa,a[j].fa);
}
}
}
for(int i=1;i<=n;i++)
{
if(pdtop(height,a[i].y,r)){a[i].top=true;topp[k]=a[i].fa;}
if(pdbot(a[i].y,r)){a[i].bot=true;bott[k]=a[i].fa;}
k++;
}
for(int i=1;i<k;i++)
{
for(int j=1;j<k;j++)
{
if(topp[i]==bott[j])
{
pd=true;
break;
}
}
if(pd){cout<<"Yes";break;}
}
if(!pd) cout<<"No";
pd=false;
}
return 0;
}