zoukankan      html  css  js  c++  java
  • 10369

    这题的意思是给出p个点,然后p的点可以由无线电通信或者是卫星通信,然后只有m的点能通过卫星通信,然后用无线电通信的点的距离不能超过D超过D的话惠氏通信的成本增加,问在使通信成本就低的情况下求D

    这题还是最小生成树,用prim算法构造MST,在构造的过程将每次算的最小的权值存到数组f里面,然后按照升序排序。因为卫星通信可以无限远,就是说后m的权值可以不用算,所以答案就是f[p-m].

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    const double inf=2500000;
    double G[555][555]; 
    int x[555],y[555];
    double low[555]; 
    int vis[555];
    double f[555];
    int m,p;
    double get_dis(int a,int b,int c,int d)
    {
        return sqrt(pow(a-c,2.0)+pow(b-d,2.0));
    }
    void prim()
    {
        memset(vis,0,sizeof(vis));
        int pos=1;
        double min;
        vis[1]=1;
        for(int i=1;i<=p;i++)
        low[i]=G[pos][i];
        for(int i=1;i<p;i++)
        {
            min=inf;
            for(int j=1;j<=p;j++)
            {
                if(!vis[j]&&low[j]<min)
                {
                    min=low[j];
                    pos=j;
                }
            }
            vis[pos]=1;
            f[i]=min;
            for(int j=1;j<=p;j++)
            {
                if(!vis[j]&&low[j]>G[pos][j])
                low[j]=G[pos][j];
            }
        } 
        sort(f+1,f+p);
        printf("%0.2lf
    ",f[p-m]);
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d %d",&m,&p);
            for(int i=1;i<=p;i++)
            scanf("%d %d",&x[i],&y[i]);
            int k=0;
            for(int i=1;i<=p;i++)
            {
                
                for(int j=i+1;j<=p;j++)
                G[i][j]=G[j][i]=get_dis(x[i],y[i],x[j],y[j]);
            }
            prim();
        }
        return 0;
    }
        
  • 相关阅读:
    自定义注解标签验证
    redis-服务器配置-主从
    POJ-2195 Going Home(最小费用最大流模板)
    POJ-1087 A Plug for UNIX
    HDU-3625 Examining the Rooms (第一类斯特林数)
    网络流入门
    CodeForces-1082G Increasing Frequency
    python学习之模块-模块(三)
    python学习之模块-模块(二)
    python学习之模块-模块(一)
  • 原文地址:https://www.cnblogs.com/NaCl/p/9580152.html
Copyright © 2011-2022 走看看