90玄关,mle
查看原帖
90玄关,mle
1311900
Greeper楼主2025/6/12 19:37
#include<bits/stdc++.h>
using namespace std;
int T;
int n,h,r;
const int N=1e3+3;
int fa[N];
int gf(int x)
{
    return fa[x]==x?x:fa[x]=gf(fa[x]);
}
long long x[N],y[N],z[N];
int main()
{
    cin>>T;
    while(T--)
    {
        cin>>n>>h>>r;
        fa[1001]=1e3+1;
        fa[0]=0;
        for(int i=1;i<=n;i++)
        {
            fa[i]=i;
            cin>>x[i]>>y[i]>>z[i];
            if(z[i]<=r)fa[gf(1001)]=i;
            if(z[i]+r>=h)fa[gf(i)]=0;
            for(int j=1;j<i;j++)
            {
                if(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])+(z[i]-z[j])*(z[i]-z[j]))<=2*r) fa[gf(i)]=gf(j);
            }  
        }
        // cout<<gf(1001)<<' '<<gf(0)<<endl;
        if(gf(1e3+1)==gf(0))cout<<"Yes\n";
        else cout<<"No\n";
        // for(int i=1;i<=n;i++)cout<<fa[i]<<' ';
        // cout<<endl;
        // cout<<gf(1e3+1)<<' '<<gf(0)<<endl;
    }
    return 0;
}
2025/6/12 19:37
加载中...