• UVa 10397 Connect the Campus


    最小生成树

    Kruskal

    #include<cmath>
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    struct A{
        int x,y;
        double z;
    }a[500010];
    int r[755];
    int find_(int x)
    {
        while(x!=r[x])
            x=r[x];
        return x;
    }
    
    int cmp(A a,A b)
    {
        return a.z<b.z;
    }
    int main()
    {
        int n,m,i,j,k,c,b,x[755],y[755];
        while(scanf("%d",&n)!=EOF)
        {
            for(i=1;i<=n;i++)
                scanf("%d%d",&x[i],&y[i]);
            for(i=1;i<=n;i++)
                r[i]=i;
            k=0;
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++){
                    if(i>j){
                        double s=sqrt(  (x[i]-x[j])*(x[i]-x[j])+ (y[i]-y[j])*(y[i]-y[j]) );
                        a[++k].x=i;
                        a[k].y=j;
                        a[k].z=s;
                    }
                }
            scanf("%d",&m);
            while(m--){
                scanf("%d%d",&c,&b);
                int aa=find_(c);
                int bb=find_(b);
                if(aa!=bb){
                    r[aa]=bb;
                }
            }
    
            sort(a+1,a+1+k,cmp);
            double ans=0;
            for(i=1;i<=k;i++)
            {
                int aa=find_(a[i].x);
                int bb=find_(a[i].y);
                if(aa!=bb){
                    r[aa]=bb;
                    ans=ans+a[i].z;
                }
            }
            printf("%.2lf
    ",ans);
    
    
        }
        return 0;
    }
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Django与Ajax
    Django 常用字段和参数
    Django 模型层之多表操作
    Django 模型层之单表操作
    Django模板层
    Django 视图层
    Django 路由控制
    Django入门(下)
    Django入门(上)
    JavaScript常用类
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4837168.html
Copyright © 2020-2023  润新知