• poj2236


    简单并查集 这题WA了20几次 相当无语 写了半小时 找错找了2小时 就因为输入用的字符而不是字符串 真无语 做poj要相当细心啊

    相当小心啊

    还有一点注意一下 N是1001  刚开始我直接开的1001

    将已经修好的距离可达到的电脑合并为一个集合 比较两个节点的根节点是否相同就是

    View Code
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include<math.h>
     4 int father[1010], deep[1010];
     5 int find(int u)
     6 {
     7     if(u!=father[u])
     8     {
     9         father[u] = find(father[u]);
    10     }
    11     return father[u];
    12 }
    13 void union1(int q, int p)
    14 {
    15     q = find(q);
    16     p = find(p);
    17     if(q!=p)
    18     {
    19         if(deep[q]>deep[p])
    20         {
    21             father[p] = q;
    22         }
    23         else
    24         {
    25             if(deep[q] == deep[p])
    26             deep[p]++;
    27             father[q] = p;
    28         }
    29     }
    30 }
    31 int main()
    32 {
    33     int n, d, x[1010],y[1010],f[1010], i, j,a,b,flag=0,xi,yi;
    34     char s[10];
    35     long long  v;
    36     scanf("%d%d", &n, &d);
    37     for(i = 1 ; i <= n ; i++)
    38     {
    39         father[i] = i;
    40         deep[i] = 0;
    41         f[i] = 0;
    42     }
    43     for(i = 1 ;i <= n ; i++)
    44     {
    45         scanf("%d%d", &x[i], &y[i]);
    46     }
    47     while(scanf("%s", s)!=EOF)
    48     {
    49         if(s[0] == 'O')
    50         {
    51             scanf("%d", &b);
    52             f[b] = 1;
    53             for(i = 1 ; i <= n ; i++)
    54             {
    55                 v = (x[i]-x[b])*(x[i]-x[b])+(y[i]-y[b])*(y[i]-y[b]);
    56                 if(f[i] == 1 &&v<=d*d&&i!=b)
    57                    {
    58                        union1(i, b);
    59                    }
    60             }
    61         }
    62         else
    63         {
    64             scanf("%d %d", &xi, &yi);
    65             if(find(xi) == find(yi))
    66             printf("SUCCESS\n");
    67             else
    68             printf("FAIL\n");
    69         }
    70     }
    71     return 0;
    72 }
  • 相关阅读:
    .Net 集合类
    Linux与Windows共享资源samba+mount
    Linux系统基本设置
    python实例31[urllib.request.urlopen获取股票信息]
    iptables 基本命令使用举例
    API控制VM虚拟机(VM Workstation or VM Server)
    vbs实现unicode和ascii的转化
    python语法31[string的print和format]
    Windows下运行XServer
    Perl IDE之Perl Express和Eclipse+EPIC+PadWalker
  • 原文地址:https://www.cnblogs.com/shangyu/p/2580254.html
Copyright © 2020-2023  润新知