求助
查看原帖
求助
400333
qzilr楼主2022/7/1 14:14

后8个点全WA,求大佬指点

#include<bits/stdc++.h>
using namespace std;
int f[1005];
int find(int x){
	if(f[x]==x)	return x;
	return f[x]=find(f[x]);
}
struct node{
	int x,y,z;
	int operator +(const node &o)const{
		return (x-o.x)*(x-o.x)+(y-o.y)*(y-o.y)+(z-o.z)*(z-o.z);
	}
};
int main(){
	int t;
	cin>>t;
	while(t--){
		int n,h,r;
		int q[1005],p[1005],lq=0,lp=0;
		int flag=0;
		node a[1005];
		cin>>n>>h>>r;
		for(int i=1;i<=n;i++)	cin>>a[i].x>>a[i].y>>a[i].z,f[i]=i;
		for(int i=1;i<=n;i++){
			if(a[i].z<=r)	q[++lq]=i;
			if(a[i].z+r>=h)	p[++lp]=i;
			for(int j=1;j<=n;j++){
				int u=find(i),v=find(j);
				if(u!=v&&a[i]+a[j]<=4*r*r)	f[u]=v;
			}
		}
		for(int i=1;i<=lq;i++)
			for(int j=1;j<=lp;j++)
				if(find(q[i])==find(p[i])){cout<<"Yes\n";flag=1;}
		if(flag==0)	cout<<"No\n";
	}
	return 0;
}
2022/7/1 14:14
加载中...