LOJ10066 新的开始

题目描述

发展采矿业当然首先得有矿井,小 F 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井,但他似乎忘记考虑的矿井供电问题……

为了保证电力的供应,小 F 想到了两种办法:

  1. 在这一口矿井上建立一个发电站,费用为 v(发电站的输出功率可以供给任意多个矿井)。
  2. 将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 p。

小 FF 希望身为「NewBe_One」计划首席工程师的你帮他想出一个保证所有矿井电力供应的最小花费。

输入格式

第一行一个整数 n,表示矿井总数。

第 2∼n+1 行,每行一个整数,第 i 个数vi​ 表示在第i 口矿井上建立发电站的费用。

接下来为一个n×n 的矩阵 pp,其中pi,j​ 表示在第 i 口矿井和第 j 口矿井之间建立电网的费用(数据保证有pi,j​=pj,i​,且 pi,i​=0)。

输出格式

输出仅一个整数,表示让所有矿井获得充足电能的最小花费。

样例

样例输入

4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0

样例输出

9

样例解释

小 FF 可以选择在 4 号矿井建立发电站然后把所有矿井都不其建立电网,总花费是3+2+2+2=9。

数据范围与提示

对于 30% 的数据:1≤n≤50;
对于 100% 的数据:1≤n≤300,0≤vi​,pi,j​≤10^5。

_______________________________________________________

最小生成树,记得建立0号点,把0号点到其他点的边长设为建电站的花费。

_______________________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=305;
4 struct edge
5 {
6 int u,v,w;
7 }e[maxn*maxn];
8 int n,js,cnt;
9 long long ans;
10 void addage(int u,int v,int w)
11 {
12 e[js].u=u;e[js].v=v;e[js++].w=w;
13 }
14 bool mycmp(edge a,edge b)
15 {
16 return a.w<b.w;
17 }
18 int fa[maxn];
19 int find(int x)
20 {
21 if(x==fa[x])return x;
22 return fa[x]=find(fa[x]);
23 }
24 int main()
25 {
26 scanf("%d",&n);
27 for(int x,i=1;i<=n;++i)
28 {
29 scanf("%d",&x);
30 addage(0,i,x);
31 }
32 for(int x,i=1;i<=n;++i)
33 {
34 for(int j=1;j<=n;++j)
35 {
36 scanf("%d",&x);
37 if(i<j)addage(i,j,x);
38 }
39 }
40 for(int i=0;i<=n;++i)fa[i]=i;
41 sort(e,e+js,mycmp);
42 for(int i=0;i<js;++i)
43 {
44 int a=find(e[i].u),b=find(e[i].v);
45 if(a!=b)
46 {
47 fa[a]=b;
48 ans+=e[i].w;
49 ++cnt;
50 if(cnt==n)break;
51 }
52 }
53 cout<<ans;
54 return 0;
55 }

LOJ10066的更多相关文章

  1. LOJ10066 新的开始

    LOJ10066 新的开始 prim 典型题.碰到这种情况,只要建一个虚拟节点,和其他的点连边,按题目给权值即可 代码中把n+1当成虚拟节点 懒得写kruskal就用prim了 #include< ...

随机推荐

  1. Spring AOP 实战运用

    Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体 ...

  2. [LeetCode]690. Employee Importance员工重要信息

    哈希表存id和员工数据结构 递归获取信息 public int getImportance(List<Employee> employees, int id) { Map<Integ ...

  3. 【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中

    问题描述 基于.NET Core的Function App如果配置了Application Insights之后,每有一个函数被执行,则在Application Insights中的Logs中的tra ...

  4. GC算法与回收策略

    算法: 标记-清理  :首先标记出需要回收的对象 ,然后统一回收待标记的对象. 缺点:易产生大量空间碎片,空间碎片太多导致程序在运行过程中产生大对象时 因为空间不足导致容易导致另一个垃圾收集动作 标记 ...

  5. mysql8.0.x中datasource信息

    driverClassName: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql:// ...

  6. Spring Boot 2.x基础教程:实现文件上传

    文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作. ...

  7. spark-streaming获取kafka数据的两种方式

    简单理解为:Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据 一.Receiver方式: 使用kafka的高层次Consumer ...

  8. 大数据专栏 - 基础1 Hadoop安装配置

    Hadoop安装配置 环境 1, JDK8 --> 位置: /opt/jdk8 2, Hadoop2.10: --> 位置: /opt/bigdata/hadoop210 3, CentO ...

  9. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...

  10. Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed

    安装docker时,自己添加了国内的hub.docker.com镜像 [root@ce-docker ~]# systemctl restart docker 出现以下报错:Job for docke ...