记录编号 |
539207 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2017]奶酪 |
最终得分 |
100 |
用户昵称 |
数声风笛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;
}