• Uva(10034)


    这题是要你求讲所有点连起来的最小的代价是多少。连起两点的代价是两个点之间的距离。。。最基本的最小生成树

    #include<stdio.h>
    #include<string.h>
    #include<math.h> 
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=200;
    int u[maxn*maxn],v[maxn*maxn];
    double dis[maxn*maxn];
    double x[maxn*maxn],y[maxn*maxn];
    int p[maxn*maxn];
    int r[maxn*maxn]; 
    int n; 
    void init()
    {
        for(int i=1;i<=n;i++)
        p[i]=i;
    }
    bool cmp(int i,int j)
    {
        return dis[i]<dis[j];
    } 
    double disd(double a,double b,double c,double d)
    {
        return sqrt(pow(a-c,2.0)+pow(b-d,2.0));
    }
    int find(int x)
    {
        return p[x]==x?x:find(p[x]);
    } 
    double kua(int n)
    {
        double ans=0;
        init();
        for(int i=0;i<n;i++)
        r[i]=i;
        sort(r,r+n,cmp);
        for(int i=0;i<n;i++)
        {
            int w=r[i];
            int x=find(u[w]);
            int y=find(v[w]);
            if(x!=y)
            {
              ans+=dis[w];
              p[x]=y;    
            }
        }
        return ans;
    } 
    int main()
    {
        int t; 
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            scanf("%lf %lf",&x[i],&y[i]);
            int k=0;
            for(int i=1;i<=n;i++)
            {
                for(int j=i+1;j<=n;j++)
                {
                    double len=disd(x[i],y[i],x[j],y[j]);
                    dis[k]=len;
                    u[k]=i;
                    v[k]=j;
                    k++; 
                }
            }
            double ans=kua(k);
            printf("%0.2lf
    ",ans);
            if(t)
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    Redux 学习总结
    ECMAScript 6 学习总结
    Bootstrap 前端UI框架
    React.js 学习总结
    html 之 <meta> 标签之http-equiv
    Leetcode Excel Sheet Column Number (C++) && Excel Sheet Column Title ( Python)
    490
    414
    494
    458
  • 原文地址:https://www.cnblogs.com/NaCl/p/4829640.html
Copyright © 2020-2023  润新知