码迷,mamicode.com
首页 > Web开发 > 详细

POJ 2236 Wireless Network(并查集)

时间:2017-07-31 17:14:20      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:else   containe   space   size   ide   ext   action   print   text   

题目链接[kuangbin带你飞]专题五 并查集 A - Wireless Network

题意

有n台损坏的电脑,现要将其逐台修复,且使其相互恢复通信功能。若两台电脑能相互通信。则有两种情况。一是他们之间的距离小于d。二是他们能够借助都可到达的第三台已修复的电脑。给出全部电脑的坐标位置,对其进行两种可能的操作,O x表示修复第x台。S x y表示推断x y之间是否能通信,若能输出SUCCESS,否则输出FALL。

思路

用并查集来保存电脑互相的连通情况。
每次修好电脑后,将它能够通信的电脑(距离满足且已修好)与它进行连通。

代码

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<algorithm>
#define LL long long
using namespace std;

const int N = 1009;
int x[N], y[N], fa[N];
bool p[N];
vector<int> v[N];

int find(int x)
{
    if(fa[x] == x)
        return x;
    return fa[x] = find(fa[x]);
}

int main()
{
    int n, d;
    char s[2];
    scanf("%d%d", &n, &d);
    for(int i=1; i<=n; i++)
    {
        scanf("%d%d", &x[i], &y[i]);
        fa[i] = i;
    }
    for(int i=1; i<=n; i++)
        for(int j=i+1; j<=n; j++)
        {
            if(((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])) <= d*d)
            {
                v[j].push_back(i);
                v[i].push_back(j);
            }
        }
    while(~scanf("%s", s))
    {
        int a, b;
        if(s[0] == ‘O‘)
        {
            scanf("%d", &a);
            p[a] = true;
            for(int i=0; i<v[a].size(); i++)
                if(p[v[a][i]])
                {
                    b = find(v[a][i]);
                    fa[b] = a;
                }
        }
        else
        {
            scanf("%d%d", &a, &b);
            int ta = find(a);
            int tb = find(b);
            if(ta == tb)
                printf("SUCCESS\n");
            else
                printf("FAIL\n");
        }
    }
    return 0;
}

POJ 2236 Wireless Network(并查集)

标签:else   containe   space   size   ide   ext   action   print   text   

原文地址:http://www.cnblogs.com/gccbuaa/p/7263975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!