70分,第7、9、10个点TLE,求助
查看原帖
70分,第7、9、10个点TLE,求助
821325
wuren555楼主2023/3/14 00:04

如题

#include<bits/stdc++.h>
using namespace std;

struct aaa{
	long long x;
	long long y;
	long long z;
}l[1005];
int cmp(aaa xx,aaa yy){
	return xx.z<yy.z;
}

long long T,n,h,r,cnt=0;
long long qi[1005];
bool ding[1005],fin=false,zz[1005];

bool di(int i,int j){
	double aa=sqrt((l[i].x-l[j].x)*(l[i].x-l[j].x)+(l[i].y-l[j].y)*(l[i].y-l[j].y)+(l[i].z-l[j].z)*(l[i].z-l[j].z));
	if(aa<=2*r) return true; 
	return false;
}

int zou(int x){
	zz[x]=true;
	if(fin) return 0;
	if(ding[x]){
		fin=true;
		return 0;
	}
	for(int i=1;i<=n;i++){
		if(!zz[i]&&di(x,i)){
			zou(i);
		}
	}
	zz[x]=false;
	return 0;
} 

int main(){
	cin>>T;
	for(int cc=1;cc<=T;cc++){
		cnt=0;
		fin=false;
		memset(ding,false,sizeof(ding));
		memset(qi,0,sizeof(qi));
		memset(zz,false,sizeof(zz));
		cin>>n>>h>>r;
		for(int i=1;i<=n;i++){
			cin>>l[i].x>>l[i].y>>l[i].z;
		}
		for(int i=1;i<=n;i++){
			
			if(h<=r+l[i].z){
				ding[i]=true;
			}
			if(l[i].z<=r){
				cnt++;
				qi[cnt]=i;
			}
		}
		for(int i=1;i<=cnt;i++){
			zou(qi[i]);
			if(fin){
				cout<<"Yes"<<endl;
				break;
			}
		}
		if(!fin) cout<<"No"<<endl;
	}
	return 0;
}
2023/3/14 00:04
加载中...