求助!!死卡30
查看原帖
求助!!死卡30
758623
_Waldeinsamkeit_楼主2023/10/4 18:11

1-3A,剩下的WA

#include<iostream> 
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
long long f[1020];
struct note {
	double x,y,z;
}a[1020];
long long find (long long n)
{
	if (f[n]==n)
	{
		return n;
	}
	return f[n]=find(f[n]);
}
long long count (long long n,long long m)
{
	return (a[n].x-a[m].x)*(a[n].x-a[m].x)+(a[n].y-a[m].y)*(a[n].y-a[m].y)+(a[n].z-a[m].z)*(a[n].z-a[m].z);
}
void bing (long long n,long long m)
{
	f[n]=f[m];
	return;
}
int main()
{
	long long T,i,j;
	cin>>T;
	while (T--)
	{
		long long n,m,k;
		cin>>n>>m>>k;
		for (i=1;i<=n;i++)
		{
			cin>>a[i].x>>a[i].y>>a[i].z;
			f[i]=i;
		}
		for (i=1;i<=n;i++)
		{
			for (j=1;j<=n;j++)
			{
				if (count(i,j)<=k*k*4)
				{
					bing(i,j);
				}
			}
		}
		long long f=1,f1=0,f2=0;
		for (i=1;i<n;i++)
		{
			if (find(i)!=find(i+1))
			{
				f=0;
			}
		}
		for (i=1;i<=n;i++)
		{
			if (a[i].z-k<=1)
			{
				f1=1;
			}
			if (a[i].z+k>=m)
			{
				f2=1;
			} 
		}
		if (f==1&&f1==1&&f2==1)
		{
			cout<<"Yes"<<endl; 
		}
		else
		{
			cout<<"No"<<endl;
		}
	} 
	return 0;
}
2023/10/4 18:11
加载中...