zoukankan      html  css  js  c++  java
  • poj 2236 Wireless Network(并查集)

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<cmath>
    using namespace std;
    struct Node
    {
        double x,y;
    };
    Node node[1100];
    int vis[1100];
    double mat[1005][1005];
    int fa[1005];
    
    int find(int x)
    {
        return fa[x]==x?x:find(fa[x]);
    }
    
    void bin(int x,int y)
    {
        int fx=find(x);
        int fy=find(y);
    
        if(fx!=fy)
        {
            fa[fx]=fa[fy];
        }
    }
    
    
    
    int main()
    {
        int n,m;
        int i,j,k;
        int x,y;
        int f,t;
        double d;
        char str[10];
        memset(vis,0,sizeof(vis));
        memset(mat,-1,sizeof(mat));
    
        scanf("%d%lf",&n,&d);
        for(i=0;i<=n;i++)
        {
            fa[i]=i;
        }
    
        for(i=1;i<=n;i++)
        {
            scanf("%lf%lf",&node[i].x,&node[i].y);
        }
        for(i=1;i<=n;i++)
        {
            for(j=i+1;j<=n;j++)
            {
                double tx=fabs(node[i].x-node[j].x);
                double ty=fabs(node[i].y-node[j].y);
                //printf("%.2f %.2f
    ",tx,ty);
                double len=sqrt(tx*tx+ty*ty);
                if(len<=d)
                     mat[i][j]=mat[j][i]=len;
                else mat[i][j]=mat[j][i]=-1;
                //printf("%.2f %.2f
    ",len,mat[i][j]);
            }
        }
        /*
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                printf("%.2lf ",mat[i][j]);
            }
            printf("
    ");
        }*/
    
        while(scanf("%s",str)!=EOF)
        {
            if(str[0]=='O')
            {
                scanf("%d",&x);
                vis[x]=1;
                for(i=1;i<=n;i++)
                {
                    if(vis[i]==1&&mat[x][i]!=-1)
                    {
                        bin(x,i);
                    }
                }
            }
            else if(str[0]=='S')
            {
                scanf("%d%d",&x,&y);
                if(find(x)==find(y))
                {
                    printf("SUCCESS
    ");
                }
                else printf("FAIL
    ");
            }
        }
    
    
        return 0;
    }
    
  • 相关阅读:
    centos下安装mycat
    centos下安装MySQL5.7
    centos下yum安装wget失败
    开心消消乐刷金币
    myBatis获取批量插入数据的主键id
    nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
    Mac下安装JDK 6
    VI下删除所有内容
    Mac下lombok无法安装到eclipse mars
    WEB-INF目录下的文件访问权限
  • 原文地址:https://www.cnblogs.com/sola1994/p/4693015.html
Copyright © 2011-2022 走看看