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 ...
随机推荐
- 2、.net NVelocity中原生javascript ajax封装使用
在页面上,我们经常会遇到局部刷新的例子,这个时候,就需要用到ajax, 因为很多代码都是公用的,所以我们想到了,将代码封装,简化了使用,减少了冗余 javascript ajax代码如下: var x ...
- 提交App Store注意事项1
1.未遵守苹果iOS APP数据储存指导方针. 如果你的App有离线数据下载功能,尤其需要关注这一点.因为离线数据一般占用存储空间比较大,可以被重新下载和重建,但是用户往往希望系统存储空间紧时也依然能 ...
- my9.23(输入输出,写操作)
#include <iostream> #include <fstream> using namespace std; void write(int data,int len) ...
- 关于键盘冲突那点事(3键冲突/7键冲突/PS2/USB的各种原理)
转自关于键盘冲突那点事(3键冲突/7键冲突/PS2/USB的各种原理) 最近闲得无聊,正好看到有人发帖提问,于是就来详细说说所谓键位冲突和无冲突的各种原理--基本上这也是个老生常谈的话题了,但相关的技 ...
- 因为中国队赢了,再撸一下DJANGO的官方文档吧
对比一下,CBVS和FBVS,哪个方便? from django.shortcuts import render from django.http import Http404 from django ...
- 李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档
李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMCl ...
- Ubuntu apt-get 更换源,以提高下载速度
http://blog.csdn.net/gaojinshan/article/details/9244823 Ubuntu的默认源是美国的,所以下载起来特别慢,作为天朝的用户,自然要更换为天朝的源了 ...
- 杂烩:QWidget、QGraphics、QtQuick
一说起Qt 大都会想起Qt的GUI编程,具体到某个类的话,最多的就是QWidget类及其子类了. 其实Qt中还有基于项的图形视图,具体来说QGraphicsView,QGraphicsScene,QG ...
- leetcode面试准备: Substring with Concatenation of All Words
leetcode面试准备: Substring with Concatenation of All Words 1 题目 You are given a string, s, and a list o ...
- C/C++ ceil和floor函数
ceil 是“天花板" floor 是 “地板” 一个靠上取值,另一个靠下取值,如同天花板,地板. double ceil ( double x ); float ceil ( float ...