40分#5#6#7#8#9#10WA,求助
查看原帖
40分#5#6#7#8#9#10WA,求助
359845
岂非楼主2021/5/29 12:00

代码

#include <cstdio>
#include <cmath>
using namespace std;
long long n,h,r;
struct ball{
	long long x,y,z,fa,di,son[1001],sons;
}a[1001];
bool pd(long long x,long long y){
	if(sqrt((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))<=2*r){
		return 1;
	}
	return 0;
}
void hb(long long x,long long y){
	for(long long i=0;i<a[y].sons;i++){
		a[a[y].son[i]].fa=a[x].fa;
		a[a[x].fa].son[a[a[x].fa].sons++]=a[y].son[i];
	}
	a[y].sons=0;
}
bool js(long long x){
	if(a[x].di==1||a[x].z+r>=h){
		if(a[x].di==1&&a[x].z+r>=h){
			return 1;
		}
		if(a[x].di==1){
			if(a[a[x].fa].z+r>=h){
				return 1;
			}
			for(long long i=0;i<a[a[x].fa].sons;i++){
				if(a[a[a[x].fa].son[i]].z+r>=h) return 1;
			}
		}
		else{
			if(a[a[x].fa].di==1){
				return 1;
			}
			for(long long i=0;i<a[a[x].fa].sons;i++){
				if(a[a[a[x].fa].son[i]].di==1) return 1;
			}
		}
	}
	return 0;
}
int main(){
	freopen("P3958_5.in","r",stdin);
	long long t;
	scanf("%d",&t);
	for(long long ti=0;ti<t;ti++){
		scanf("%lld%lld%lld",&n,&h,&r);
		for(long long i=1;i<=n;i++){
			scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z);
			a[i].fa=i;
			if(a[i].z-r<=0){
				a[i].di=1;
			}
			else{
				a[i].di=0;
			}
		}
		for(long long i=1;i<=n;i++){
			for(long long j=1;j<=n;j++){
				if(pd(i,j)){
					if(a[j].sons==0){
						a[j].fa=a[i].fa;
						a[i].son[a[i].sons++]=j;
					}
					else{
						hb(i,j);
					}
				}
			}
		}
		bool bo=0;
		for(long long i=1;i<=n;i++){
			if(js(i)){
				bo=1;break;
			}
		}
		if(bo){
			printf("Yes\n");
		}
		else{
			printf("No\n");
		}
	}
	return 0;
}
2021/5/29 12:00
加载中...