蒟蒻求助:为什么会编译失败
查看原帖
蒟蒻求助:为什么会编译失败
114611
Smile_233楼主2021/11/16 22:25

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e3+5;
int T;
int n,h;
int x[N],y[N],z[N];
vector<int> g[N];
bool end[N];

inline ll sqr(int i){return (ll)i*(ll)i;}
inline ll dis(int i,int j){return sqr(x[i]-x[j])+sqr(y[i]-y[j])+sqr(z[i]-z[j]);}

bool inq[N];
bool bfs(int s)
{
	queue<int> que;
	que.push(s);
	inq[s]=1;
	while(!que.empty())
	{
		int u=que.front();
		que.pop();
		inq[u]=0;
		int size=g[u].size();
		for(int i=0;i<size;++i)
		{
			int v=g[u][i];
			if(end[v]) return 1;
			if(!inq[v])
			{
				inq[v]=1;
				que.push(v);
			}
		}
	}
	return 0;
}
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		memset(end,0,sizeof(end));
		memset(inq,0,sizeof(inq));
		g[0].clear();
		
		int r;
		scanf("%d%d%d",&n,&h,&r);
		for(int i=1;i<=n;++i) scanf("%d%d%d",&x[i],&y[i],&z[i]);
		
		for(int i=1;i<=n;++i)
		{
			g[i].clear();
			if(z[i]<=r) g[0].push_back(i);
			if(h-z[i]<=r) end[i]=1;
			for(int j=1;j<=n;++j)
				if(i!=j&&dis(i,j)<=sqr(2*r))
					g[i].push_back(j);
		}
		
		if(bfs(0)) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
2021/11/16 22:25
加载中...