zoukankan      html  css  js  c++  java
  • uva 10034 Freckles

    最小生成树

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #define INF 1000000000.0
    #define N 110
    double g[N][N],lowcost[N],x[N],y[N];
    int n,cov[N];
    
    double dis(int i , int j)
    {  return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); }
    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]);
    
            for(int i=1; i<=n; i++) g[i][i]=INF;
            for(int i=1; i<=n; i++)
                for(int j=i+1; j<=n; j++)
                    g[i][j]=g[j][i]=dis(i,j);
    
            double sum=0;
            memset(cov,0,sizeof(cov));
            for(int i=1; i<=n; i++) lowcost[i]=g[1][i];
            lowcost[1]=0;  cov[1]=1;
            for(int nn=1; nn<n; nn++)
            {
                double min=INF; int u=1;
                for(int i=1; i<=n; i++)
                    if(!cov[i] && lowcost[i]<min)
                    { min=lowcost[i]; u=i; }
                cov[u]=1;
                sum+=lowcost[u];
    
                for(int v=1; v<=n; v++)
                    if(!cov[v] && g[u][v]<lowcost[v])
                        lowcost[v]=g[u][v];
            }
    
            printf("%.2f\n",sum);
            if(T) printf("\n");
        }    
        return 0;
    }
  • 相关阅读:
    【二食堂】Alpha
    【二食堂】Alpha- 发布声明
    【Beta】Scrum Meeting 4
    【Beta】Scrum Meeting 3
    【Beta】Scrum Meeting 2
    【Beta】Scrum Meeting 1
    beta设计和计划
    alpha事后分析
    alpha项目展示
    Scrum Meeting 最终总结
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2807881.html
Copyright © 2011-2022 走看看