奶酪 noip dfs

题目:

https://ac.nowcoder.com/acm/problem/16417

dfs或者并查集

数据要开到long long 

#include<iostream>
#include<string.h>
using namespace std;
int mp[1002][1002],vis[1002];
long long n,h,r;
struct node
{
    long long x,y,z;
}a[1002];
int dfs(int x,int t)
{  if(x==t)
return 1;
    vis[x]=1;
    for(int i=1;i<=n+1;i++)
    {
        if(!vis[i]&&mp[x][i])
        {
            if(dfs(i,t))
                return 1;
        }
    }
    return 0;
}
int xianglian(node q,node w)
{
    return (q.x-w.x)*(q.x-w.x)+(q.y-w.y)*(q.y-w.y)+(q.z-w.z)*(q.z-w.z)<=4*r*r;
}
int main()
{   int t;
    cin>>t;
while(t--)
{
     cin>>n>>h>>r;
    memset(vis,0,sizeof(vis));
    memset(mp,0,sizeof(mp));
    for(int i=1;i<=n;i++)
    {cin>>a[i].x>>a[i].y>>a[i].z;
       if(a[i].z<=r)
        mp[0][i]=1;

       if(h-a[i].z<=r)

        mp[i][n+1]=1;

    }

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
        if(i!=j&&xianglian(a[i],a[j]))
                mp[i][j]=1;
       }
    }
    if(dfs(0,n+1))
        cout<<"Yes\n";
    else
        cout<<"No\n";
}

}
#include<iostream>
using namespace std;
long long n,h,r;
int f[1200];
struct node
{
    long long x,y,z;
}a[1200];
int find(int x)
{
    return x==f[x]?x:f[x]=find(f[x]);
}
int xianglian(node q,node w)
{
    return (q.x-w.x)*(q.x-w.x)+(q.y-w.y)*(q.y-w.y)+(q.z-w.z)*(q.z-w.z)<=4*r*r;
}
void merge(int i,int j)
{
    int fx=find(i);
    int fy=find(j);
    if(fx==fy)
    ;
    else
        f[fx]=fy;
}
int main()
{   int t;
    cin>>t;
while(t--)
{
     cin>>n>>h>>r;

    for(int i=0;i<=n+1;i++)
        f[i]=i;
    for(int i=1;i<=n;i++)
    {cin>>a[i].x>>a[i].y>>a[i].z;
       if(a[i].z<=r)
  merge(0,i);

       if(h-a[i].z<=r)
       merge(i,n+1);
    }

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
        if(i!=j&&xianglian(a[i],a[j]))
            {
                merge(i,j);
            }
       }
    }
    if(find(0)==find(n+1))
        cout<<"Yes\n";
    else
      cout<<"No\n";
}
}

 

posted @ 2021-07-10 10:11  废柴废柴少女  阅读(49)  评论(0)    收藏  举报