LOJ10066
LOJ10066 新的开始
题目描述
发展采矿业当然首先得有矿井,小 F 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井,但他似乎忘记考虑的矿井供电问题……
为了保证电力的供应,小 F 想到了两种办法:
- 在这一口矿井上建立一个发电站,费用为 v(发电站的输出功率可以供给任意多个矿井)。
- 将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 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的更多相关文章
- LOJ10066 新的开始
LOJ10066 新的开始 prim 典型题.碰到这种情况,只要建一个虚拟节点,和其他的点连边,按题目给权值即可 代码中把n+1当成虚拟节点 懒得写kruskal就用prim了 #include< ...
随机推荐
- 《中间件性能挑战赛--分布式统计和过滤的链路追踪》java 选手分享
2020年6月份天池举办的<中间件性能挑战赛>可谓是异常激烈,本人抽业余时间报名参与,感受比赛惨烈的同时,也有诸多感慨哈,总结一个多月的赛程,多少有一些心得与大家分享 本文原创地址:htt ...
- spark优化项
一.Shuffle优化项 1.Shuffle优化配置 - spark.shuffle.file.buffer 默认值:32k 参数说明:该参数用于设置shuffle write task的Buffer ...
- Docker-MsSqlServer和安装版本异同
创建SqlServer容器 docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd&g ...
- 风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解
风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解 越权漏洞 0x01 漏洞介绍 越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响 ...
- 风炫安全WEB安全学习第二十二节课 DOM型XSS讲解
风炫安全WEB安全学习第二十二节课 DOM型XSS讲解 Dom型XSS演示 通过Javascript,可以重构整个HTML文档,你可以添加.移除.改变或重排页面上的项目 要改变页面的某个东西,Java ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)
前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...
- 学习rac管理
文章转自:http://blog.itpub.net/7728585/viewspace-752185/ crsctl query crs activeversion 查看版本 ocrconfig - ...
- 【Oracle】常见等待事件处理
1.查看数据库中需要关注的等待事件: select sw.seq#,sw.sid||','||s.serial# sids,s.username,sw.event,sw.P1,sw.p2,sw.p3, ...
- 【Oracle】查看oracle用户相关权限
系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'CHAXUN' UNION ALL SELECT * FROM DBA_SYS_PRIVS WHER ...