NYOJ 38 布线问题_(解法2 Prim算法)

NYOJ 38 布线问题_(解法2 Prim算法)

大家好,又见面了,我是全栈君。

时间限制:
1000 ms  |  内存限制:
65535 KB
难度:
4

描写叙述
南阳理工学院要进行用电线路改造。如今校长要求设计师设计出一种布线方式。该布线方式须要满足下面条件:

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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115567.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM垃圾回收机制 (垃圾判断,垃圾回收算法,垃圾回收器,五种引用)【jvm】「建议收藏」

    JVM垃圾回收机制 (垃圾判断,垃圾回收算法,垃圾回收器,五种引用)【jvm】「建议收藏」????‍????博主主页:爪哇贡尘拾Miraitow????传作时间:????2022年1月9日晚21:44????????????内容介绍:最近在学习JVM所以会时不时更新有关内容????参考资料:黑马JVM度娘????参考链接:????JVM垃圾回收机制⏳简言以励:列位看官,且将新火试新茶,诗酒趁年华????内容较多有问题希望能够不吝赐教????????欢迎点赞????收藏⭐留言????????JVM垃圾回收♻1.1如何判断对象可以回收♻1、引用计数器法2、可达

    2022年6月6日
    32
  • POJ2309 BST

    POJ2309 BST

    2022年2月21日
    44
  • php curl_init post/get请求

    php curl_init post/get请求publicfunctiongetCurlApi(){$url=’地址’;$headers=array(‘access_token:’.$token);$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);//设置调用地址curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);//添加头…

    2022年7月12日
    20
  • Linux命令行大全

    Linux命令行大全#Linux命令行大全###第一部分学习shell####1shell是什么#####1.1终端仿真器#####1.2第一次键盘输入######1.2.1命令历史记录######

    2022年7月3日
    33
  • 深度自编码器原理_编码器原理

    深度自编码器原理_编码器原理自编码器的目标:使用少量高阶特征重构输入定义:使用自身的高阶特征编码自己思想:自编码器其实也是一种神经网络,他的输入和输出一致的,借助稀疏编码的思想,目标是使用高阶特征重新组合来重构自己。特点:期望输入和输出一致;希望使用高阶特征来重构自己,而不只是复制像素点。Hinton提出基于信念网络(deepbeliefNetwords,DBN,由多层RBM堆叠而成)可以使用无监督学习逐层训练的贪心算法…

    2022年10月1日
    5
  • 新手小白学JAVA 面向对象之多态

    新手小白学JAVA 面向对象之多态4多态4.1概念多态指同一个实体同时具有多种形式它是面向对象程序设计(OOP)的一个重要特征。主要是指同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。好处是:可以把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。水果有两种形态:水果和苹果,不关心买回来的是苹果还是西瓜,只要是水果就行classAnimal{//1.定义父类Animal…eat(){syso(“吃啥都行”)}}classCatexte

    2022年7月19日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号