悬关!dfs爆零了
查看原帖
悬关!dfs爆零了
764672
ZJLmath楼主2023/7/23 15:12
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+5;
int x[maxn],y[maxn],z[maxn];
#define dis(i,j) (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])+(z[i]-z[j])*(z[i]-z[j])
int n,h,r;
bool ans=0;
void dfs(int pos){
	if(ans)return;
	if(z[pos]+r>=h){
		ans=1;
		return;
	}
	for(int i=1;i<=n;i++){
		if(i==pos)continue;
		double dist=dis(i,pos);
		if(dist<=4*r*r){
			dfs(i);
			if(ans)return;
		}
	}
}
int main(){
	int T;
	cin>>T;
	while(T--){
		ans=0;
		cin>>n>>h>>r;
		for(int i=1;i<=n;i++){
			cin>>x[i]>>y[i]>>z[i];
		}
		dfs(1);
		cout<<(ans?"Yes\n":"No\n");
	}
	return 0;
}

2023/7/23 15:12
加载中...