HDU1301 Jungle Roads(Kruskal)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9216 Accepted Submission(s): 6805

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.
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.
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.
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
216
30 题意:输入n,代表景点数,接下来n-1行,每一行第一的字母代表景点,后面的数字代表与它相连的景点数,后面有n对字母与数字,代表与该景点相连的景点及距离。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 100 int ptr[N];//父亲数组
int num,n;
struct vallage
{
int start,to,weight;
};
struct vallage v[N]; void init()
{
int i;
for (i=;i<N;i++)
{
ptr[i]=i;
}
} bool cmp(vallage a,vallage b)
{
if (a.weight<b.weight)
{
return true;
}
return false;
} int find(int x)
{
return ptr[x]==x?x:ptr[x]=find(ptr[x]);
} void solve()
{
int x,y,i,intree=,ans=; sort(v,v+num,cmp);
// for (i=0;i<num;i++)
// {
// printf("%d %d %d\n",v[i].start,v[i].to,v[i].weight);
// } for (i=;i<num;i++)
{
x=find(v[i].start);//找父亲
y=find(v[i].to); if (x!=y)
{
ans=ans+v[i].weight;
ptr[x]=y;
intree++; if (intree==n-)//以加入最小数边数
{
break;
}
}
} printf("%d\n",ans);
} int main()
{
int i,net,j,weight;//net为邻接边数,weight为权
char start,to;//start为出点,to出点 while (scanf("%d",&n)&&n)
{
if (n==)
{
return ;
} num=;
init();
for (i=;i<n-;i++)
{
cin>>start>>net; for (j=;j<net;j++)
{
cin>>to>>weight;
v[num].start=start-'A';
v[num].to=to-'A';
v[num++].weight=weight;
}
} solve();
} return ;
}
HDU1301 Jungle Roads(Kruskal)的更多相关文章
- POJ1251 Jungle Roads(Kruskal)(并查集)
Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23882 Accepted: 11193 De ...
- HDU-1301 Jungle Roads(最小生成树[Prim])
Jungle Roads Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...
- HDU1301 Jungle Roads
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...
- POJ1251 Jungle Roads Kruskal+scanf输入小技巧
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...
- hdu1301 Jungle Roads 最小生成树
The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was s ...
- hdu1301 Jungle Roads (Prim)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 依旧Prim............不多说了 #include<iostream> ...
- hdu1301 Jungle Roads 基础最小生成树
#include<iostream> #include<algorithm> using namespace std; ; int n, m; ]; struct node { ...
- poj1251 Jungle Roads Kruskal算法+并查集
时限: 1000MS 内存限制: 10000K 提交总数: 37001 接受: 17398 描述 热带岛屿拉格里山的首长有个问题.几年前,大量的外援花在了村庄之间的额外道路上.但是丛林不断地超 ...
- HDU1301&&POJ1251 Jungle Roads 2017-04-12 23:27 40人阅读 评论(0) 收藏
Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25993 Accepted: 12181 De ...
随机推荐
- OpenSSL.Net 在生产环境中无法正常加载的原因分析与解决 z
http://blog.csdn.net/wangjia184/article/details/6990098 http://www.openssl.org/ 在本地测试好好的代码部署到生产环境后,遇 ...
- kubeadm安装kubernetes 1.12版本
直接写过程,有些描述就省略了关于kubeadm安装k8s 1.11.2版本可以查看:https://www.cnblogs.com/shansongxian/p/9753603.html 首先查看下k ...
- 4.Zabbix 3.0 案例
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=2807c0910cd63d309e1462128a31ae0e&sub=241A94E5717 ...
- DeepQA websocket 并发测试
var client = new Array(); var W3CWebSocket = new Array(); var concurrent = 2; for (var i = 0; i < ...
- Jmeter 登陆性能测试
1.打开Jmeter,新建一个线程组:测试计划--添加--Threads(users)---线程组 如图: 2.首先要添加一个HTTP默认请求,为什么要添加这个呢? 如果要测试的系统域名或者IP地址是 ...
- 2018.10.10 Java的The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 错误
我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on t ...
- 【洛谷P3811】[模板]乘法逆元
乘法逆元 题目链接 求逆元的三种方式: 1.扩欧 i*x≡1 (mod p) 可以化为:x*i+y*p=1 exgcd求x即可 inline void exgcd(int a,int b,int &a ...
- 推荐几个Mac/Linux下比较好用的工具
1.Tmux,连接开发机可以让在任务在开发机一直执行,不用nohup &这种了也相对稳定,还有session可以记录当时的状态. 常用命令: tmux new -s name 指定名字开启一个 ...
- mobileeye
if a human can drive a car based on vision alone – so can a computer. 但是目前哪家能做到?
- 9.异常Exception
9.1 异常概述 package exception; /* * 异常:程序运行的不正常情况 * * Throwable: 异常的超类 * |-Error * 严重问题,这种问题我们通过异常处理是不能 ...