萌新求助
查看原帖
萌新求助
347205
Conquer_1楼主2020/8/28 13:50

输入什么都输出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;
}
2020/8/28 13:50
加载中...