zoukankan      html  css  js  c++  java
  • COGS 7. 通信线路

     
    问题描述
    假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时, 如何在最少经费的前提下建立这个通信网。在每两个城市之间都可以设置—条线路,相应地都要付出一定的经济代价。n个城市之间,最多可能设置n(n- 1)/2条线路,那么,如何在这些可能的线路中选择n-1条,以使总的耗费最少呢?
     
    【输入格式】
    输入文件有若干行
    第一行,一个整数n,表示共有n个城市
    第2--n+1行,每行n个数,分别表示该城市与其它城市之间路线的费用,如果城市间不能建立通信则用-1表示
     
    【输出格式】
    一行,1个整数,表示最少总费用
     
    【输入输出样例】
     
    输入文件
     

    -1 5 -1 -1 -1 -1 
    5 -1 50 -1 -1 10
    -1 50 -1 20 10 -1
    -1 -1 20 -1 60 30
    -1 -1 10 60 -1 100
    -1 10 -1 30 100 -1
     
    输出文件
     
    75
     
    【数据规模】
     
    对于40%的数据,保证有n<100: 
    对于60%的数据,保证有n<256; 
    对于全部的数据,保证有n<=1501。
     
    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 1000000+15
    int n,m,s,t,a,b,z,fa[maxn],head[maxn],dis[maxn],cnt,tot,x[maxn],y[maxn],ans;
    struct Edge{
        int x,y,w;
    }edge[1501*1501+16];
    bool cmp(Edge a,Edge b) { return a.w<b.w; }
    int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]); }
    int main()
    {
        freopen("mcst.in","r",stdin);
        freopen("mcst.out","w",stdout);
        scanf("%d",&n);
        for(int i=1;i<=n;i++) fa[i]=i;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                scanf("%d",&a);
                if(a!=-1) 
                {
                    edge[++cnt].x=i,edge[cnt].y=j;
                    edge[cnt].w=a;
                }
            }
        sort(edge+1,edge+cnt+1,cmp);
        for(int i=1;i<=cnt;i++)
        {
            int fx=find(edge[i].x),fy=find(edge[i].y);
            if(fx!=fy)
            {
                fa[fx]=fy;
                ans+=edge[i].w;
                tot++;
            }    
            if(tot==n-1)     break;    
        }
        printf("%d",ans);
        return 0;
    }
     
  • 相关阅读:
    LWIP的底层结构(物理层)
    Source insight 支持汇编
    Camera Vision
    i2c-tools的使用方法及举例
    浅析C语言中strtol()函数与strtoul()函数的用法
    CF540C Ice Cave
    CF540B School Marks
    hdu5122 K.Bro Sorting
    hdu1013 Digital Roots
    蓝桥杯 算法提高 递推求值
  • 原文地址:https://www.cnblogs.com/chen74123/p/7417943.html
Copyright © 2011-2022 走看看