ZOJ1586

ZOJ1586

题意:有n个人,每个人都有自己喜欢用的网络适配器,要你求连接所有人的最小费用

        构图的时候每条边的权值等于 两个人用的适配器的费用加上两个人之间网线的费用,然后求最小生成树

ZOJ1586
ZOJ1586

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 using namespace std;
 7 #define inf 9999999
 8 #define N 1005
 9 int n,g[N][N],vis[N],dis[N];
10 int cos[N];
11 
12 int prim(int st)
13 {
14     for(int i=1; i<=n; i++)
15     {
16         dis[i] = g[i][st];
17         vis[i] = 0;
18     }
19     dis[st] = 0 ; vis[st] = 1;
20     int cost = 0;
21     for(int T=1; T<n; T++)
22     {
23         int mindis = inf , idx = -1;
24         for(int i=1; i<=n; i++)
25         {
26             if(!vis[i]&&dis[i] < mindis)
27             {
28                 mindis = dis[i];
29                 idx = i;
30             }
31         }
32         cost += mindis;
33         if(idx == -1) return -1;
34         vis[idx] = 1;
35         for(int i=1; i<=n; i++)
36         {
37             if(!vis[i]&& dis[i]>g[i][idx])
38             {
39                 dis[i] = g[i][idx];
40             }
41         }
42     }
43     return cost;
44 }
45 
46 int main()
47 {
48     int T,val;
49     scanf("%d",&T);
50     while(T--)
51     {
52         for(int i=1; i<=n; i++)
53         for(int j=1; j<=n; j++)
54         {
55             if(i==j) g[i][j] =0;
56             else g[i][j]= inf;
57         }
58         
59         scanf("%d",&n);
60         for(int i=1; i<=n; i++)
61         scanf("%d",&cos[i]);
62         for(int i=1; i<=n; i++)
63         for(int j=1; j<=n; j++)
64         {
65             scanf("%d",&val);
66             if(i!=j) g[i][j] = val + cos[i] + cos[j];
67         }
68         printf("%d\n",prim(1));
69     }
70     return 0;
71 }

View Code

 

转载于:https://www.cnblogs.com/ar940507/p/3224190.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110063.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux服务器中如何解压分卷文件,Linux解压rar文件(unrar安装和使用,分卷解压)…

    linux服务器中如何解压分卷文件,Linux解压rar文件(unrar安装和使用,分卷解压)…windows平台很多压缩文档为rar文件,那么怎么做到Linux解压rar文件(unrar安装和使用)?简单,centos5安装unrar即可。unrar安装方法如下:wgethttp://dag.wieers.com/rpm/packages/unrar/unrar-3.6.8-1.el5.rf.i386.rpm;rpm-Uvhunrar-3.6.8-1.el5.rf.i386.rpm…

    2022年7月11日
    26
  • 全网最全Linux命令总结!!(史上最全,建议收藏)[通俗易懂]

    Linux超全命令总结,看这一篇就够了,建议小伙伴们先收藏后阅读!!

    2022年4月18日
    36
  • PostgresSQL 分页查询 SQL语句

    PostgresSQL 分页查询 SQL语句SELECT*FROM“库名”.“表名”wheretellike‘%1%’orderbyidasclimit3OFFSET0;

    2022年10月19日
    2
  • 易经六十四卦详解白话文解释——易经64卦全解(下)「建议收藏」

    易经六十四卦详解白话文解释——易经64卦全解(下)「建议收藏」文章目录第33卦 天山遁(遁卦) 遁世救世 下下卦第34卦 雷天大壮(大壮卦) 壮勿妄动 中上卦第35卦 火地晋(晋卦) 求进发展 中上卦第36卦 地火明夷(明夷卦) 晦而转明 中下卦第37卦 风火家人(家人卦) 诚威治业 下下卦第38卦 火泽睽(睽卦) 异中求同 下下卦第39卦 水山蹇(蹇卦) 险阻在前 下下卦第40卦 雷水解(解卦) 柔道致治 中上卦第41卦 山泽损(损卦) 损益制衡 下下卦第…

    2022年8月18日
    7
  • java migration_EF Add-Migration总结

    java migration_EF Add-Migration总结EFCodeFirst 对数据库任何的操作 千万不要手工去修改 解释 add migration 命令是 codefirstmig 中的关键命令之一 当您对领域域模型进行更改并需要将它们时添加到数据库中 您将创建一个新的迁移 这是通过 Add Migration 命令完成的 用最简单的形式 你只需要提供迁移名称展现形式 命令将您的更改构建到一个 cs 文件中 这个 cs 文件与配置文件放在同一个文件

    2025年7月29日
    4
  • python如何安装matplotlib.pyplot_matplotlib中文

    python如何安装matplotlib.pyplot_matplotlib中文首先,一些博文上说可以在pycharm自动安装,也就是:File–Setting–ProjectInterpreter–±-输入指定模块安装,这对于社区版或教育版真的不行,好吗。安装的思路比较靠谱的,也是自己安装成功的方法。第一步:在官网上下载指定安装包:官网模块包:https://pypi.org/project需要什么模块就下载啥,需要注意的是与你的python版本一致(至于怎么一致,可以…

    2022年8月27日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号