HDU1233 还是畅通工程
题目:
Problem Description
Input
当N为0时,输入结束,该用例不被处理。
Output
Sample Input
Sample Output
Hint
Huge input, scanf is recommended.
思路:
- 用结构体捆绑两个村庄和其间的距离
- 使用并查集和最小生成树,此处采用kruskal算法求最小生成树.
- 用最小生成树时需要利用STL容器中的sort排序,而排序又需要用到比较函数cmp
代码:
#include <iostream>
#include <algorithm>
#define MAXN 99*50
using namespace std; int pre[]; //存储当前节点的前驱结点
int n, m; struct node{ //结构体存储边
int begin;
int end;
int len;
}s[MAXN]; bool cmp(node a, node b)
{
return a.len < b.len; //边小的排前面
} void init(int n) //初始化成独立节点
{
for(int i = ; i <= n; i++)
pre[i] = i;
} int find(int x) //寻找当前结点的根节点
{
while(x != pre[x])
x = pre[x]; return x;
} void merge(int fx, int fy) //归并两个不同根节点的结点
{
if(fx != fy)
pre[fx] = fy;
} int kruskal()
{
int minlen = ;
sort(s, s + m, cmp); //让边从小到大排序
for(int i = ; i < m; i++)
{
int fx = find(s[i].begin);
int fy = find(s[i].end);
if(fx != fy)
{
merge(fx, fy);
minlen += s[i].len; //归并后求最小路径和
}
}
return minlen;
} int main()
{
while(scanf("%d", &n) != EOF && n)
{
init(n);
m = n * (n - ) / ;
for(int i = ; i < m; i++)
{
scanf("%d%d%d", &s[i].begin, &s[i].end, &s[i].len);
}
printf("%d\n", kruskal());
}
return ;
}
总结:
同根节点的边结点不计入,否则会构成回路。
HDU1233 还是畅通工程的更多相关文章
- HDU-1233 还是畅通工程
Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能 ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU1233 还是畅通工程 2017-04-12 19:49 64人阅读 评论(0) 收藏
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- hdu1233 继续畅通工程 (最小生成树——并查集)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 最小生成树: HDU1233还是畅通工程
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdu1233还是畅通工程
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU1233 还是畅通工程【最小生成树】
题意: 求出连接各个村庄最小的公路总长度,把最小公路总长度求出来. 思路: 最小生成树原理,带入数据求得. 代码: prim: #include<iostream> #include< ...
- hdu1233 还是畅通工程 最小生成树
给出修建边的边权,求连通所有点的最小花费 最小生成树裸题 #include<stdio.h> #include<string.h> #include<algorithm& ...
- hdu-1233 还是畅通工程---MST模板
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题目大意: 求MST最小生成树 解题思路: Prim算法直接套即可 #include<b ...
随机推荐
- Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速
Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...
- 【MySQL参数】-innodb_buffer_pool_chunk_size
如果 初始化缓冲池时 innodb_buffer_pool_chunk_size* innodb_buffer_pool_instances大于当前缓冲池大小, innodb_buffer_pool_ ...
- 关于JavaWeb中Servlet的总结
Servlet知识结构图 Servlet是JavaWeb服务器端的程序,一般一个Servlet处理一种特定的请求.Servlet编写好后,需要指定其所处理的请求的请求路径,也可以认为Servlet是一 ...
- dubbo的启动时检查
修改的消费者(xml) 修改的消费者(注解)
- sqlalchemy 入门
ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上. 在Python中,最有名的ORM框架是SQLAlchemy. # 导入: from sqlalche ...
- 5.windows-oracle实战第五课 --事务、函数
什么是事务 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行一个事务dml的时候,oracle会被作用 ...
- Vue项目中跨域问题解决
后台更改header 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) Jquery jsonp 一.后台更改header header('Access-C ...
- 常见 Web 安全攻防总结
Web 安全的对于 Web 从业人员来说是一个非常重要的课题,所以在这里总结一下 Web 相关的安全攻防知识,希望以后不要再踩雷,也希望对看到这篇文章的同学有所帮助.今天这边文章主要的内容就是分析几种 ...
- Java复习(四)类的重用
4.1类的继承 Java只支持类的单继承,每一个子类只能有一个直接父类. #继承的语法 class childClass extends parentClass { //类体 } 子类不能直接访问从父 ...
- MRP自动运算设置
1.执行计划-删除老的调度计划: 2.运算日志-清除冲突: 3.MRP计划运算向导,清除预留: 4.创建MRP凌晨调度任务,名称自己修改: 5.创建完成: 6.设置消息通知: