记录编号 539207 评测结果 AAAAAAAAAA
题目名称 [NOIP 2017]奶酪 最终得分 100
用户昵称 Gravatar数声风笛ovo 是否通过 通过
代码语言 C++ 运行时间 0.978 s
提交时间 2019-08-05 19:42:53 内存使用 13.86 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct WDNMD{
	int x,y,z;
}p[2333];
ll T,n,h,r,father[23333]={0},QAQ,QwQ;
ll find(int a){
    if(father[a]!=a){
		father[a]=find(father[a]);
	}   
    return father[a];
} 
ll squa(ll qwq){
	return qwq*qwq;
}
ll dis(ll x1,ll y1,ll z1,ll x2,ll y2,ll z2){
	return squa(x1-x2)+squa(y1-y2)+squa(z1-z2);
}  
int main(){
	freopen("2017cheese.in","r",stdin);
	freopen("2017cheese.out","w",stdout);
	scanf("%d",&T);
	for(int o=1;o<=T;o++){
		scanf("%d%d%d",&n,&h,&r);
		for(int i=1;i<=n;i++){
			scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
			father[i]=i;
		}
		for(int i=1;i<=n-1;i++){
    		for(int j=i;j>=1;j--){
    			if(dis(p[i+1].x,p[i+1].y,p[i+1].z,p[j].x,p[j].y,p[j].z)<=4*squa(r)){
    				QAQ=find(i+1);
    				QwQ=find(j);
    				father[QAQ]=QwQ;
    			}
    		}
    	}
		for(int i=1;i<=n;i++){
			if(p[i].z-r<=0&&p[i].z+r>=0){
				for(int j=1;j<=n;j++){
					if(h-p[j].z<=r&&find(i)==find(j)){
						printf("Yes\n");
						goto FLAG;
					}
				}
			}	
		}
		printf("No\n");
		FLAG: continue;
	}
	return 0;
}