博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1251——Jungle Roads(prim)
阅读量:2344 次
发布时间:2019-05-10

本文共 3311 字,大约阅读时间需要 11 分钟。

Description

这里写图片描述

The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to maintain. The Council of Elders must choose to stop maintaining some roads. The map above on the left shows all the roads in use now and the cost in aacms per month to maintain them. Of course there needs to be some way to get between all the villages on maintained roads, even if the route is not as short as before. The Chief Elder would like to tell the Council of Elders what would be the smallest amount they could spend in aacms per month to maintain roads that would connect all the villages. The villages are labeled A through I in the maps above. The map on the right shows the roads that could be maintained most cheaply, for 216 aacms per month. Your task is to write a program that will solve such problems.

Input

The input consists of one to 100 data sets, followed by a final line containing only 0. Each data set starts with a line containing only a number n, which is the number of villages, 1 < n < 27, and the villages are labeled with the first n letters of the alphabet, capitalized. Each data set is completed with n-1 lines that start with village labels in alphabetical order. There is no line for the last village. Each line for a village starts with the village label followed by a number, k, of roads from this village to villages with labels later in the alphabet. If k is greater than 0, the line continues with data for each of the k roads. The data for each road is the village label for the other end of the road followed by the monthly maintenance cost in aacms for the road. Maintenance costs will be positive integers less than 100. All data fields in the row are separated by single blanks. The road network will always allow travel between all the villages. The network will never have more than 75 roads. No village will have more than 15 roads going to other villages (before or after in the alphabet). In the sample input below, the first data set goes with the map above.

Output

The output is one integer per line for each data set: the minimum cost in aacms per month to maintain a road system that connect all the villages. Caution: A brute force solution that examines every possible set of roads will not finish within the one minute time limit.

Sample Input

9

A 2 B 12 I 25
B 3 C 10 H 40 I 8
C 2 D 18 G 55
D 1 E 44
E 2 F 60 G 38
F 0
G 1 H 35
H 1 I 35
3
A 2 B 10 C 40
B 1 C 20
0
Sample Output

216

30

别看字,看图看样例

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x3f3f3f3f#define MAXN 100#define Mod 10001using namespace std;int n,map[MAXN][MAXN],vis[MAXN],dis[MAXN];int prim(){ int i,j,pos,min,ans=0; memset(vis,0,sizeof(vis)); vis[1]=1,pos=1; for(i=1; i<=n; ++i) if(i!=pos) dis[i]=map[pos][i]; for(i=1; i
map[pos][j]) dis[j]=map[pos][j]; } return ans;}int main(){ int k,w; char u,v; while(~scanf("%d",&n)&&n) { for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) map[i][j]=INF; for(int i=1; i
>u>>k; while(k--) { cin>>v>>w; map[u-'A'+1][v-'A'+1]=w; map[v-'A'+1][u-'A'+1]=w; } } printf("%d\n",prim()); } return 0;}

转载地址:http://escvb.baihongyu.com/

你可能感兴趣的文章
在一棵度为3的树中,度为3的节点个数为2,度为2的节点个数为1,则度为0的节点个数为()----百度2016研发工程师笔试题(六)
查看>>
在/etc/fstab文件中指定的文件系统加载参数中, 参数一般用于CD-ROM等移动设备。----百度2016研发工程师笔试题(六)
查看>>
在多级存储体系中,“Cache-主存”结构的作用是解决( )的题目。----腾讯2014研发笔试卷
查看>>
C++ 实现 0-1 背包问题
查看>>
指针数组 数组指针 指针函数 函数指针
查看>>
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
查看>>
字符串常量放在只读存储区
查看>>
#define 和 typedef 的区别
查看>>
不属于冯诺依曼体系结构必要组成部分是:
查看>>
有1000亿条记录,每条记录由url,ip,时间组成,设计一个系统能够快速查询以下内容(程序设计题)
查看>>
最大堆---实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
查看>>
拓扑排序
查看>>
已知n阶矩阵A的行列式满足|A|=1,求|A^(-1)|(A^(-1)表示A的逆矩阵)=?
查看>>
已知一对夫妇有两个孩子,如果知道有一个是男孩,那么两个都是男孩的概率?
查看>>
视图包含下列结构是不可以更新的
查看>>
可能返回 null 的 SQL 语句
查看>>
以下关于STL的描述中,错误的有
查看>>
假设某棵二叉查找树的所有键均为1到10的整数,现在我们要查找5。下面____不可能是键的检查序列。
查看>>
给定一个整数sum,从有N个无序元素的数组中寻找元素a、b、c、d,使得 a+b+c+d =sum,最快的平均时间复杂度是____。
查看>>
设二叉树结点的先根序列、中根序列和后根序列中,所有叶子结点的先后顺序____。
查看>>