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. java中自定义一个异常类 在某些情况抛出自定的异常 ----------阻断程序

    //=============定义异常类 package org.springblade.flow.engine.errorException; /** * 自定义异常处理写入sap失败 */ pub ...

  2. Windows下不同版本的JDK共存

    1.安装jdk7,将C:\Windows\System32目录下的java.exe.javaw.exe.javac.exe删除. 2.安装jdk8,将系统环境变量path中的C:\ProgramDat ...

  3. 使用mybatis执行对应的SQL Mapper配置中的insert、update、delete等标签操作,数据库记录不变

    我使用springMVC集成mybatis,执行SQLMapper配置文件里的insert操作,发现程序没有报错,但数据库表里却没有刚才插入的记录.查了很多资料,终于在一篇博客上找到了答案:在执行完方 ...

  4. JavaDailyReports10_10

    1.4.2 键盘事件的处理 KeyListener  接口实现了处理键盘事件      KeyEvent 对象描述键盘事件的相关信息. KeyListener 接口有三个方法:KeyPressed K ...

  5. 主从同步遇到 Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'时怎么解决

    首先遇到这个是因为binlog位置索引处的问题,不要reset slave: reset slave会将主从同步的文件以及位置恢复到初始状态,一开始没有数据还好,有数据的话,相当于重新开始同步,可能会 ...

  6. RocketMQ踩坑记

    一.前言 现在的主流消息队列基本都是kafka.RabbitMQ和RocketMQ,只有了解各自的优缺点才能在不同的场景选择合适的MQ,对比图如下: MQ对比图 本篇文章主要介绍我自己在跑官方demo ...

  7. spark-streaming-连接kafka的两种方式

    推荐系统的在线部分往往使用spark-streaming实现,这是一个很重要的环节. 在线流程的实时数据一般是从kafka获取消息到spark streaming spark连接kafka两种方式在面 ...

  8. mysql The used table type doesn’t support FULLTEXT indexes 解决方案 (phpstudy 会出现),coten不会

    mysql The used table type doesn't support FULLTEXT indexes 是不支持全文索引,解决方案: 1.停掉mysql服务2.打开my.ini,搜索de ...

  9. 分享一个的c++写的,模仿awk的框架类CAwkDoc

    这是我好多年前,模仿awk写的. awk大家都比较熟悉,使用awk处理文件,读取文件,分割字段这些工作awk自己帮你实现了. 程序员只要编写业务逻辑代码,并且awk还提供了很多常用的字符串操作函数,可 ...

  10. Lesson_strange_words4

    mount on 安装 arc 弧 actuator 马达,致动器:调节器 roughly 大致,大约 radially 径向,放射状 stepper 步进机 motor 电机,发动机 sequent ...