nyoj38
布线问题
- 描述
- 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:
1、把所有的楼都供上电。
2、所用电线花费最少
- 输入
- 第一行是一个整数n表示有n组测试数据。(n<5)
每组测试数据的第一行是两个整数v,e.
v表示学校里楼的总个数(v<=500)
随后的e行里,每行有三个整数a,b,c表示a与b之间如果建铺设线路花费为c(c<=100)。(哪两栋楼间如果没有指明花费,则表示这两栋楼直接连通需要费用太大或者不可能连通)
随后的1行里,有v个整数,其中第i个数表示从第i号楼接线到外界供电设施所需要的费用。( 0<e<v*(v-1)/2 )
(楼的编号从1开始),由于安全问题,只能选择一个楼连接到外界供电设备。
数据保证至少存在一种方案满足要求。 - 输出
- 每组测试数据输出一个正整数,表示铺设满足校长要求的线路的最小花费。
- 样例输入
-
1
4 6
1 2 10
2 3 10
3 1 10
1 4 1
2 4 1
3 4 1
1 3 5 6 - 样例输出
-
4 与一道省赛题目类似,走了弯路,这个要求只能有一个结点与虚拟结点连接,所以先对n个点求出一个MST再找出最小的虚拟节点与这个树的权值,加上这个权值就是答案! 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊笨死了啊
#include<bits/stdc++.h>
using namespace std;
#define N 205005
int u[N],v[N],w[N],r[N];
bool cmp(int i,int j){return w[i]<w[j];}
int n,m;
int f[505];
int getf(int v){return f[v]==v?v:f[v]=getf(f[v]);}
int main()
{
int t,n,m,i,j,k;
int a,b,c;
cin>>t/*=read()*/;
while(t--){
cin>>n>>m;
for(i=0;i<=n;++i) f[i]=i;
for(i=1;i<=m;++i) {r[i]=i;
cin>>u[i]/*=read(),*/>>v[i]/*=read(),*/>>w[i]/*=read()*/;
}
sort(r+1,r+m+1,cmp);
int sumn=0,Count=0;
for(i=1;i<=m&&Count!=n-1;++i){
int e=r[i],x=getf(u[e]),y=getf(v[e]);
if(x!=y){
Count++;
f[y]=x;
sumn+=w[e];
}
}int ans=999999999,x;
for(i=1;i<=n;++i){cin>>x;ans=min(x,ans);}
cout<<sumn+ans<<endl;
}
return 0;
}
nyoj38的更多相关文章
- 最小生成树--->NYOJ-38 布线问题
此题是最基础的最小生成树的题目,有两种方法, 一个是prim一个是kruskal算法,前者利用邻接矩阵,后者是利用边集数组 prim算法的思想是:一个点一个点的找, 先找从第一个点到其他点最小的, 把 ...
- 布线问题 (NYOJ38)
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...
- nyoj38——最小生成树
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...
随机推荐
- php CI 实战教程第一季百度经验杂志
phpCI实战教程第一季_百度经验杂志_百度经验http://jingyan.baidu.com/magazine/16428 杂志为本人php CI实战教程系列经验 从实际项目使用中写系列实战经验, ...
- hue, saturation, and brightness:色调、饱和度和亮度
色调.饱和度和亮度(hue, saturation, and brightness)以人对红.绿.蓝(RGB)三色组合的感觉为基础.在描述阴极射线管显示器参数时,经常提到这三个专有名词.所有的颜色可以 ...
- Kali连接不上ssh
1.修改sshd_config文件 vim /etc/ssh/sshd_config 将#PasswordAuthentication yes的注释去掉 将#PermitRootLogin prohi ...
- 怎么说, 开发会很乐意去主动修改bug?
怎么说, 开发会很乐意去主动修改bug? 一图顶上千言万语,如下:
- 20145101《Java程序设计》第9周学习总结
20145101<Java程序设计>第9周学习总结 教材学习内容总结 第十六章 整合数据库 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增 ...
- 20135234mqy-——信息安全系统设计基础第九周学习总结
第十章 系统级I/O 10.1 Unix I/O 一个Unix文就是一个m个字节的序列 Unix:将设备映射为文件的方式,允许Unix内核引出一个简单低级的应用接口 能够使得所有输入输出都能以一种统一 ...
- C语言: 两个int变量相除,结果保留两位小数
#include<stdio.h> void main() { ,j=; float h; h=(*/)/; printf("%.2f",h); } 注:%f:不指定宽 ...
- Eclipse给方法或者类添加自动注释
自动生成注释: 在团队开发中,注释是必不可少的,为了是自己的注释看起来更加优雅,注释的格式应该统一,我们可以使用Eclipse注释模板自动生成注释. 具体操作如下: 打开注释模板编辑窗口:Window ...
- 完美解决vim在终端不能复制的问题
以前 用xshell,或者其他工具ssh到远程服务器,vim不能复制,搜索说是vim的 -xterm_clipboard没有开启. 今天发现,至少鼠标复制是不需要这个东东的! 在stackoverfl ...
- [不屈的复习] - http://how2j.cn/
http://how2j.cn/ 该教程网站分得比较规整!