博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NEFU OJ 205 最小树(一)
阅读量:6242 次
发布时间:2019-06-22

本文共 1415 字,大约阅读时间需要 4 分钟。

  • description

    某省长调查交通情况,发现本省交通事故发生不断,于是决定在本省内全部修建地铁。该省长得到的统计表中列出了任意两市之间的距离,为了确保任何两个市都可以直接或者间接实现地铁交通,并要求铺设的地铁总长度最小,请计算最小的地铁总长度。

    input

    测试输入包含若干测试用例。每个测试用例的第一行给出市的数目n,(n < 50);随后的n(n-1)/2行对应市之间的距离,每行给出一对正整数,分别是两个市的编号,以及两市之间的距离。为简单起见,市从1到n编号,当n为0时,输入结束,该样例不做处理。

    output

    对每个测试用例,在一行里输出最小的地铁总长度,保留两位小数。

    sample_input

    31 2 1.81 3 2.92 3 4.50

    sample_output

    4.70 用前向星写着玩玩,当然直接临接表会快些
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define MAX 456789123using namespace std;struct node{ int next,to; double val;}bb[1000];int sum=0,head[1000];double ans=0,sss[1000];int N;int visit[1000];void add(int a,int b,double c){ bb[sum].to=b; bb[sum].next=head[a]; bb[sum].val=c; head[a]=sum++;}void zx(int a){ double max=MAX;int k=MAX; for(int i=head[a];i!=-1;i=bb[i].next) { int u=bb[i].to; if(!visit[u]) { if(bb[i].val<=sss[u]){sss[u]=bb[i].val;} } } for(int i=1;i<=N;i++) { if(!visit[i]&&sss[i]
    >N&&N) { for(int i=1;i<=N;i++) sss[i]=MAX; memset(visit,0,sizeof(visit)); memset(head,-1,sizeof(head)); int n; n=N*(N-1)/2; while(n--) { int a,b; double c; cin>>a>>b>>c; add(a,b,c); add(b,a,c); } for(int i=1;i

     

转载于:https://www.cnblogs.com/SparkPhoneix/p/8858483.html

你可能感兴趣的文章
关于:url伪静态
查看>>
Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习...
查看>>
申请微信公众号
查看>>
python中 __name__的使用
查看>>
(译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)
查看>>
WSUS客户端升级使用命令行快速自动更新系统补丁包
查看>>
如何不让上网影响工作?看看作家怎么做
查看>>
MySQL 获得当前日期时间(以及时间的转换)
查看>>
solrcloud分布式集群部署及索引操作实例
查看>>
PHP URL 重定向 的三种方法(转)
查看>>
ubuntu14.04安装docker
查看>>
Android ADT 离线下载技巧(告别在线安装的麻烦)
查看>>
MySQL umask 导致备份报错
查看>>
LunarPages LPCP面板设置访问Web Mail教程
查看>>
java Atomic
查看>>
我的友情链接
查看>>
SQL-字符串连接聚合函数
查看>>
JDK基础--ThreadLocal原理分析与使用场景
查看>>
我的友情链接
查看>>
互联网社交产品与流量需求供求分析
查看>>