[2017年NOIP提高组] 奶酪
作者:互联网
函数判断是否相邻:直径与距离
在进行深搜,标记路过的,若不是且相邻,再调用
注意:第一个和底层需独立判断
#include<bits/stdc++.h>
using namespace std;
long long t,n,h,r,i,j,b[1005],falg,bj;
struct ww{
long long x,y,z;
}ab[1005];
bool pd(int a,int b){
long long d=(ab[a].x-ab[b].x)*(ab[a].x-ab[b].x)+(ab[a].y-ab[b].y)*(ab[a].y-ab[b].y)+(ab[a].z-ab[b].z)*(ab[a].z-ab[b].z);
if(r*r*4>=d) return 1;
else return 0;
}
void ss(int nn){
if(ab[nn].z+r>=h){
falg=1;
return;
}
if(bj>=n) return;
for(int j=1;j<=n;j++){
if(pd(nn,j)==1&&b[j]!=0&&nn!=0||(nn==0&&ab[j].z<=r)){
b[j]=0;
bj++;
ss(j);
}
if(falg==1) return;
}
}
int main(){
cin>>t;
for(i=1;i<=t;i++){
bj=0;
cin>>n>>h>>r;
falg=0;
for(int ij=1;ij<=n;ij++){
b[ij]=1;
cin>>ab[ij].x>>ab[ij].y>>ab[ij].z;
}
ss(0);
if(falg==0){
cout<<"No"<<endl;
}
else{
cout<<"Yes"<<endl;
}
}
}
标签:ab,return,nn,NOIP,int,奶酪,long,ij,2017 来源: https://www.cnblogs.com/wangjunlong9948/p/16617107.html