NYOJ 38 布线问题_(解法2 Prim算法)
- 描写叙述
- 南阳理工学院要进行用电线路改造。如今校长要求设计师设计出一种布线方式。该布线方式须要满足下面条件:
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
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <limits.h>
#include <malloc.h> using namespace std; int sum; void Prim(int **node, int v)
{
sum=0;
int i,j,k,min;
int *minCost=(int *)malloc(sizeof(int)*v); minCost[0]=0; for(i=1;i<v;i++)
minCost[i]=node[0][i]; for(i=1;i<v;i++)
{
min=INT_MAX;
for(j=1,k=1;j<v;j++)
{
if(minCost[j] && minCost[j]<min)
{
min=minCost[j];
k=j;
}
} sum+=minCost[k];
minCost[k]=0; for(j=1;j<v;j++)
{
if(minCost[j] && minCost[j]>node[k][j])
{
minCost[j]=node[k][j];
}
}
}
} int main()
{
int n,v,e,i,j,k,l;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&v,&e); int **node=(int **)malloc(sizeof(int*)*v); for(i=0;i<v;i++)
node[i]=(int *)malloc(sizeof(int)*v); for(i=0;i<v;i++)
for(j=0; j<v; j++)
node[i][j]=INT_MAX; for(l=0;l<e;l++)
{
scanf("%d%d%d",&i,&j,&k);
node[i-1][j-1]=node[j-1][i-1]=k;
} Prim(node, v); int *av=(int *)malloc(sizeof(int)*v); for(i=0;i<v;i++)
scanf("%d",&av[i]);
sort(av,av+v); printf("%d\n",sum+av[0]); }
return 0;
}
NYOJ 38 布线问题_(解法2 Prim算法)的更多相关文章
- NYOJ 38 布线问题_(解法1 Kruskal算法)
时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式,该布线方式须要满足下面条件: 1.把全部的楼都供 ...
- nyoj 38 布线问题 Kruskal and Prim
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的 ...
- NYOJ 38 布线问题 (最小生成树 prim)
题目链接 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的楼都供上电. 2.所用电线花费最少 输入 第一行是一个整数n表示有n组测 ...
- NYOJ 38布线问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=38 布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳 ...
- nyoj 38 布线问题
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=38 最小生成树水题~ 代码: #include "stdio.h" / ...
- prim算法
最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法 ...
- 【Python排序搜索基本算法】之Prim算法
Prim算法是实现最简单的最小生成树(MST)算法,适合于稠密图.要实现Prim算法,我们主要关注的是增量的变化,也就是从每个非树顶点到树顶点的最短距离,使得最后生成一棵包括所有顶点的树,并且这棵树的 ...
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
A------------------------------------------------------------------------------------ 题目链接:http://20 ...
随机推荐
- 利用Jquery实现http长连接(LongPoll)
参考:http://www.cnblogs.com/vagerent/archive/2010/02/05/1664450.html PS:为了满足 某些需要 实时请求的业务(PS:例如聊天室),我们 ...
- Html DOM 常用属性和方法
Node对象的节点类型***************************************************接口 nodeType常量 nodeType值 备注Element Node ...
- JVM 学习笔记
1. JAVA类分为三类: 1.1 系统类 (用系统类加载器加载bootstrap ClassLoader) 1.2 扩展类 (用扩展类加载器加载Ext ClassLoader) 1. ...
- bzoj 2693: jzptab 线性筛积性函数
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 444 Solved: 174[Submit][Status][Discus ...
- phpStorm 配置关联php手册
phpStorm 配置关联php手册 pasting php开发中我尝试过很多个编辑器,但用的最多的是phpStorm ,但一直因为英文太烂,很多phpStorm功能,都没用过.. 最近发现有些编辑器 ...
- AD10 gerber生成,及导入cam350 多图详细步骤
Protel99转Gerber文件导入到CAM350中看为什么钻孔层偏位 这是因为你导入CAM350 时的格式没有设置正确.你用PROTEL 导出钻孔 TXT 时记住是什么格式,例如: 2:3,2:4 ...
- linux系统配置文件和用户配置文件及其作用
我的博客:www.while0.com /etc/issue 未登陆时控制台显示的文字 /etc/issue.net 远程登陆时控制台显示的文字 /etc/motd 用户登陆时显示的文字 这里先提供两 ...
- 【HDOJ】1180 诡异的楼梯
bfs+优先队列.wa了N次,才发现可以停留等待楼梯变换方向. #include <iostream> #include <queue> #include <cstdio ...
- MySQL源码 解析器
sql请求发送到server端,需要经过解析器生成内部的数据结构对象,以方便进行优化和生成执行计划.解析器主要做了两件事情,词法分析和语法分析. 词法和语法分析:mysql使用lex词法分析器,yac ...
- 【pm2】
告别node-forever,拥抱PM2 pm2及forever模块是目前较常用的nodejs进程守护模块,前者更常用些.功能也更强大(提供负载).其原理主要是pm2开启一个主进程,另行再开子进程运行 ...