zoukankan      html  css  js  c++  java
  • HDU 1875(最小生成树)

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    typedef struct
    {
        int a,b;
        double v;
    }node;
    typedef struct
    {
        int a,b;
    }P;
    const int maxn=109;
    double ans;
    int father[maxn];
    node graph[maxn*(maxn-1)/2];
    P p[maxn];
    int Find(int x)
    {
        if(father[x]==x)
            return x;
        else
        {
            father[x]=Find(father[x]);
            return father[x];
        }
    }
    void Union(int x,int y,double v)
    {
        if(Find(x)!=Find(y))
        {
            ans+=v*100;
            father[Find(x)]=Find(y);
        }
        return;
    }
    bool cmp(node x,node y)
    {
        if(x.v<y.v)
            return true;
        else
            return false;
    }
    int main()
    {
        double V;
        int n;
        scanf("%d",&n);
        while(n--)
        {
            ans=0;
            for(int i=0;i<maxn;i++)
                father[i]=i;
            int m,k;
            k=0;
            scanf("%d",&m);
            for(int i=0;i<m;i++)
            {
                scanf("%d%d",&p[i].a,&p[i].b);
            }
            for(int i=0;i<m-1;i++)
            {
                for(int j=i+1;j<m;j++)
                {
                    V=sqrt(pow((p[i].a-p[j].a),2.0)+pow((p[i].b-p[j].b),2.0));
                    if(V<=1000&&V>=10)
                    {
                        graph[k].a=i;
                        graph[k].b=j;
                        graph[k].v=V;
                        k++;
                    }
                }
            }
            sort(graph,graph+k,cmp);
            for(int i=0;i<k;i++)
                Union(graph[i].a,graph[i].b,graph[i].v);
            int xx=Find(0);
            int flag;
            flag=0;
            for(int i=0;i<m;i++)
            {
                if(Find(i)!=xx)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==1)
                printf("oh!
    ");
            else
                printf("%.1lf
    ",ans);
        }
        return 0;
    }
    
    
  • 相关阅读:
    python 基础1-变量名
    Jmeter分布式测试踩过的坑
    Jmeter接口测试踩过的坑
    搭建数据库环境
    char与char的区别
    jmeter性能测试的小小实践
    自动化测试badboy脚本开发(一)
    sql多表查询(单表查询略过)
    认识jmeter
    http与https的区别
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/9442735.html
Copyright © 2011-2022 走看看