只能输入第一组测试然后没有输出,求大佬改
查看原帖
只能输入第一组测试然后没有输出,求大佬改
1096122
HenterGaocai楼主2024/8/7 22:46
#include<bits/stdc++.h>
using namespace std;
const int N=1020;
typedef long long LL;

int n,h;
struct dian{
	int x,y,z;
}q[N];
LL r;
int p[N];//father
//并查集模板

int find(int x){
	if(p[x]!=x) p[x]=find(p[x]);
	return p[x];
}
int main(){
	int t;
	cin>>t;
	while(t--){
		cin>>n>>h>>r;
		for(int i=0;i<=n+1;i++) p[i]=i;//并查集初始化 
		for(int i=1;i<=n;i++){
			int x,y,z;
			cin>>x>>y>>z;
			q[i].x=x;
			q[i].y=y;
			q[i].z=z;
			if (z - r <= 0 && z + r >= 0) p[find(0)] = find(i);
            if (z - r <= h && z + r >= h) p[find(n + 1)] = find(i);
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;i++){
				LL dx=q[i].x-q[j].x;
				LL dy=q[i].y-q[j].y;
				LL dz=q[i].z-q[j].z;
				if(dx*dx+dy*dy+dz*dz<=4*r*r) p[find(i)]=find(j);
				
			}
		}
		if(find(0) == find(n+1)) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}
2024/8/7 22:46
加载中...