码迷,mamicode.com
首页 > 其他好文 > 详细

源哥每日一题第十九弹 poj 2236 还是冰茶集

时间:2018-06-17 22:25:33      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:tar   操作   return   电脑间   ios   题解   ons   距离   blank   

连接:http://poj.org/problem?id=2236

题意:有一堆坏电脑,和两种操作:O表示修好这台电脑,S 询问两台电脑是否联通。主要是判电脑是否联通:两台电脑间距离小于d就是联通的。

题解:emmm……直接写啊

#include <iostream>
#include <cstdio>

using namespace std;
int n;
long long d;
int pre[1005];
int jud[1005];
struct coor
{
    long long x,y;
}p[1005];

int find(int x) {
    int r = x;
    while(pre[r]!=r) r = pre[r];
    int i = x,j;
    while(i!=r) {
        j = pre[i];
        pre[i] = r;
        i = j;
    }
    return r;
}

int main(int argc, char const *argv[]) {
    
    int n,d;
    cin >> n >> d;
    for (int i = 1; i <= n; i++) {     
        cin >> p[i].x >> p[i].y;
        pre[i] = i;
        jud[i] = 0;
    }
    char s;
    int x,y;
    while(cin >> s) {

        if(s ==S) {
            cin >> x >> y;
            if(find(x) == find(y)) {
                puts("SUCCESS");
            } else { 
                puts("FAIL");
            }
        } else {
            cin >> x;
            for (int i = 1; i <= n; i++) {
                if(jud[i] && (p[x].x-p[i].x)*(p[x].x-p[i].x)+(p[x].y-p[i].y)*(p[x].y-p[i].y) <=d*d){
                    pre[find(x)] = find(i);
                }
            }
            jud[x] = 1;
        }
    }
    return 0;
}

 

源哥每日一题第十九弹 poj 2236 还是冰茶集

标签:tar   操作   return   电脑间   ios   题解   ons   距离   blank   

原文地址:https://www.cnblogs.com/fengyuzhicheng/p/9193790.html

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