社区讨论

求助大佬,全wa,但为啥样例和第一个数据全过了

P3958[NOIP 2017 提高组] 奶酪参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m1uiwdq7
此快照首次捕获于
2024/10/04 17:28
去年
此快照最后确认于
2024/10/04 19:49
去年
查看原帖
CPP
#include<bits/stdc++.h>

using namespace std;

int x[100000],y[100000],z[100000],ans=0;

bool vis[100000];

int n,h,r;

void dfs(int i){

	if(z[i]+r>=h){
    
		ans++;
		return; 
	}
	vis[i]=1;
	for(int j=1;j<=n;j++){
    
		if(!vis[j]&&r*2>=(double)sqrt(((double)x[i]-(double)x[j])*((double)x[i]-(double)x[j])+((double)y[i]-(double)y[j])*((double)y[i]-(double)y[j])+((double)z[i]-(double)z[j])*((double)z[i]-(double)z[j])))
		dfs(j);
	}
}
int main(){

	int nnn;
	cin>>nnn;
	while(nnn>=0){
		memset(vis,0,sizeof(vis));
		memset(x,0,sizeof(x));
		memset(y,0,sizeof(y));
		memset(z,0,sizeof(z));
		n=0;h=0;r=0;ans=0;
		nnn--;
		cin>>n>>h>>r;
		for(int i=1;i<=n;i++){
			cin>>x[i]>>y[i]>>z[i];
		}
		for(int i=1;i<=n;i++){
			if(!vis[i]&&z[i]<=r) dfs(i);
			if(ans!=0) {
				cout<<"Yes"<<endl;
				break;
			}
		}
		if(ans==0) cout<<"No"<<endl;
		memset(vis,0,sizeof(vis));
		memset(x,0,sizeof(x));
		memset(y,0,sizeof(y));
		memset(z,0,sizeof(z));
		n=0;h=0;r=0;ans=0;
	}
	return 0;
} ```

回复

1 条回复,欢迎继续交流。

正在加载回复...