zoukankan      html  css  js  c++  java
  • poj2236 Wireless Network

    每修好一台电脑后就逐一与之前修好的电脑进行距离计算,若距离小于等于d则加入同一集合。

    写的时候各种不认真,wa了好几次,应该好好批评下自己。

     1 #include<cstdio>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<math.h>
     5 const int maxn=1010;
     6 int p[maxn],n,d,repair[maxn],k;
     7 struct Node
     8 {
     9     double x,y;
    10     bool flag;
    11 }node[maxn];
    12 
    13 void init()
    14 {
    15     int i;
    16     for(i=1;i<=n;i++)
    17     {
    18         p[i]=i;
    19         node[i].flag=false;
    20     }
    21     k=0;
    22 }
    23 
    24 double dis(int a,int b)
    25 {
    26     double L=(node[a].x-node[b].x)*(node[a].x-node[b].x)*(1.0);
    27     L+=(node[a].y-node[b].y)*(node[a].y-node[b].y)*(1.0);
    28     L=sqrt(L);
    29     return L;
    30 }
    31 
    32 int find(int x)
    33 {
    34     if(x!=p[x])
    35     {
    36         p[x]=find(p[x]);
    37     }
    38     return p[x];
    39 }
    40 
    41 void unions(int a,int b)
    42 {
    43     int ra=find(a);
    44     int rb=find(b);
    45     if(ra==rb)
    46     return;
    47     p[ra]=rb;
    48 }
    49 int main()
    50 {
    51     //freopen("test.txt","r",stdin);
    52     scanf("%d%d",&n,&d);
    53     int i,a,b,ra,rb;
    54     for(i=1;i<=n;i++)
    55     {
    56         scanf("%lf%lf",&node[i].x,&node[i].y);
    57     }
    58     init();
    59     char c[2];
    60     while(scanf("%s",c)!=EOF)
    61     {
    62         if(c[0]=='O')
    63         {
    64             scanf("%d",&repair[k]);
    65             node[repair[k]].flag=true;
    66             for(i=0;i<k;i++)
    67             {
    68                 if(dis(repair[i],repair[k])<=d)
    69                 unions(repair[i],repair[k]);
    70             }
    71             k++;
    72         }
    73         else
    74         {
    75             scanf("%d%d",&a,&b);
    76             ra=find(a);
    77             rb=find(b);
    78             if(ra==rb)
    79             {
    80                 printf("SUCCESS\n");
    81             }
    82             else
    83             printf("FAIL\n");
    84         }
    85     }
    86     return 0;
    87 }
    View Code
  • 相关阅读:
    关于互联网下的大数据及大数据对人的影响
    综合练习:词频统计=
    五星红旗
    页面性能
    前端一些常见的基础知识
    h5常见问题汇总及解决方案
    CF 184
    2013520 训练赛后总结
    斜率优化动态规划
    2013522 完美世界复赛第三场
  • 原文地址:https://www.cnblogs.com/longlongagocsu/p/3132383.html
Copyright © 2011-2022 走看看