zoukankan      html  css  js  c++  java
  • poj2236(并查集)

    题目连接

    题意:一张图上分布着n台坏了的电脑,并知道它们的坐标。两台修好的电脑如果距离<=d就可以联网,也可以通过其他修好的电脑间接相连。给出操作“O x”表示修好x,给出操作“S x y”,请你判断x和y在此时有没有连接上。

    分析:把每次修好的电脑能到达的都扔进一个集合里,然后直接判断即可。

    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <cstdlib>
    #include <stack>
    #include <vector>
    #include <set>
    #include <map>
    #define LL long long
    #define mod 100000000
    #define inf 0x3f3f3f3f
    #define eps 1e-9
    #define N 1010
    #define FILL(a,b) (memset(a,b,sizeof(a)))
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define PII pair<int,int>
    using namespace std;
    struct node
    {
        int x,y;
    }p[N];
    int fa[N],vis[N];
    int dist(node a,node b)
    {
        return ((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    int find(int x)
    {
        return fa[x]==x?x:fa[x]=find(fa[x]);
    }
    int main()
    {
        int n;
        int d;
        while(scanf("%d%d",&n,&d)>0)
        {
            for(int i=1;i<=n;i++)fa[i]=i,vis[i]=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&p[i].x,&p[i].y);
            }
            char op[10];
            int x,y;
            while(scanf("%s",op)>0)
            {
                if(op[0]=='O')
                {
                    scanf("%d",&x);
                    vis[x]=1;
                    for(int i=1;i<=n;i++)
                    {
                        if(vis[i]&&dist(p[i],p[x])<=d*d)
                        {
                            int py=find(i);
                            int px=find(x);
                            fa[py]=px;
                        }
                    }
                }
                else
                {
                    scanf("%d%d",&x,&y);
                    if(find(x)==find(y))puts("SUCCESS");
                    else puts("FAIL");
                }
            }
        }
    }
    View Code
  • 相关阅读:
    Thread+Handler 线程 消息循环(转载)
    android开发之Fragment加载到一个Activity中
    Android应用程序框架之无边界设计意图
    windows系统下安装MySQL
    Java 性能优化技巧集锦
    功能完善的Java连接池调用实例
    Unicode 与 UTF 字符标准
    java内存配置
    Java Map 简介
    nginx 学习笔记(9) 配置HTTPS服务器--转载
  • 原文地址:https://www.cnblogs.com/lienus/p/4275728.html
Copyright © 2011-2022 走看看