博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2236 Wireless Network (并查集)
阅读量:6037 次
发布时间:2019-06-20

本文共 1200 字,大约阅读时间需要 4 分钟。

给定N个坏掉的无线发射器坐标,给定其能相连通的最大距离,O i 代表修好第i个发射器,S i j 表示判断第i个和第j个是否能接通(可间接相连)。

简单并查集应用,一个bool数组标记是否可用,每修好一个,找N个中已修好且可以直接相连的合并。最后判断i,j 是否都已修好且在同一个集合中即可。

脑残的错,把make_set()放到n的输入之前了,找了N久N久。泪流满面啊...

 

code:

#include<cstdio>
int node[
1005][
2] ;
int p[
1005] ;
bool flag[
1005] ;
int n, d ;
void make_set(){
    
for(
int i=
0; i<=n; i++){
        p[i] = i ;
        flag[i] = 
false ;
    }
}
int find_set(
int x){
    
if(x!=p[x])
        p[x] = find_set(p[x]) ;
    
return p[x] ;
}
void union_set(
int x, 
int y){
    x = find_set(x) ;
    y = find_set(y) ;
    
if(x!=y)
        p[y] = x ;
}
bool bfar(
int x, 
int y){
    
int a = node[x][
0] - node[y][
0] ;
    
int b = node[x][
1] - node[y][
1] ;
    
if(a*a+b*b<=d*d)
        
return 
true ;
    
return 
false ;
}
int main(){
    
int i, x, y ;
    
char c ;
    scanf(
"
%d%d
", &n, &d) ;
    make_set() ;
    
for(i=
1; i<=n; i++)
        scanf(
"
%d%d
", &node[i][
0], &node[i][
1]) ;
    getchar() ;
    
while(~scanf(
"
%c
", &c)){
        
if(c==
'
O
'){
            scanf(
"
%d
", &x) ;
            flag[x] = 
true ;
            
for(i=
1; i<=n; i++)
                
if(bfar(x, i)&&flag[i])
                    union_set(x, i) ;
        }
        
else{
            scanf(
"
%d%d
", &x, &y) ;
            
if(find_set(x)==find_set(y)&&flag[x]&&flag[y])  printf(
"
SUCCESS\n
") ;
            
else    printf(
"
FAIL\n
") ;
        }
        getchar() ;
    }
    
return 
0 ;

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/01/31/2332539.html

你可能感兴趣的文章
MFC之自绘控件
查看>>
算法提高 道路和航路 SPFA 算法
查看>>
Golang 如何从socket读出所有数据
查看>>
iOS开发使用半透明模糊效果方法整理
查看>>
一道图论小题目
查看>>
Hibernate拦截器(Interceptor)与事件监听器(Listener)
查看>>
关于android im
查看>>
CSS3 transforms 3D翻开
查看>>
利用传入的Type类型来调用范型方法的解决方案
查看>>
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Bootstrap系列 -- 11. 基础表单
查看>>
格拉西安《智慧书》中最有价值的23条法则
查看>>
7款经典炫酷的HTML5/jQuery动画应用示例及源码
查看>>
那些年我们一起追过的缓存写法(四)
查看>>
mssql手工注入
查看>>
zoj 3203 Light Bulb,三分之二的基本问题
查看>>
Oracle如何删除表中重复记录
查看>>
洛谷八月月赛Round1凄惨记
查看>>