60分代码求调
查看原帖
60分代码求调
793095
ZR_BL楼主2024/7/11 16:59
#include<bits/stdc++.h>
using namespace std;
long long t,n,m,h,r,q;
long long f[2002];
struct node{
	long long x,y,z,r,l;
}a[2005];
long long get(int x){
	if(f[x]==x)return x;
	return f[x]=get(f[x]);
}
long long sum(int x,int y){
	return (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);
}
int main(){
	cin>>t;
	while(t--){
		scanf("%lld%lld%lld",&n,&h,&r);
		for(int i=1;i<=n;i++)scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z);
		for(int i=1;i<=n;i++){
			if(a[i].z-r<=0)a[i].l=1;
			else a[i].l=0;
			if(a[i].z+r>=h)a[i].r=1;
			else a[i].r=0;
			f[i]=i;
		}
		m=4*r*r;q=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(sum(i,j)<=m){
					f[i]=f[j]=get(f[i]);
					a[get(i)].l=max(max(a[get(f[i])].l,a[j].l),a[i].l);
					a[get(i)].r=max(max(a[get(f[i])].r,a[j].r),a[i].r);
				}
			}
		}
		for(int i=1;i<=n;i++){
			if(a[get(i)].l&&a[get(i)].r){		
				q=1;
			}
		}
		if(q==0)printf("No\n");
		else printf("Yes\n");
	}
	return 0;
}
2024/7/11 16:59
加载中...