hdoj1233 还是畅通工程(Prime || Kruskal)
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1233
思路
最小生成树问题,使用Prime算法或者Kruskal算法解决。
代码
Prime算法:
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std; const int INF = 0xfffffff;
const int N = + ;
int map[N][N];
int dist[N]; //存储从起点到其余各点的距离,不断更新
int n; void prime()
{
int min_edge, min_node;
for (int i = ;i <= n;i++)
dist[i] = INF;
int ans = ;
int now = ;
for (int i = ;i < n;i++)
{
dist[now] = -;
min_edge = INF;
for (int j = ;j <= n;j++)
{
if (j != now && dist[j] >= )
{
if (map[now][j]>)
dist[j] = min(dist[j], map[now][j]);
if (dist[j] < min_edge)
{
min_edge = dist[j]; //min_edge存储与当前结点相连的最短的边
min_node = j;
}
}
}
ans += min_edge; //ans存储最小生成树的长度
now = min_node;
}
printf("%d\n", ans);
} int main()
{
//freopen("hdoj1233.txt", "r", stdin);
while (scanf("%d", &n) == && n)
{
memset(map, , sizeof(map));
int a, b, c;
int nums = n*(n - ) / ;
for (int i = ; i < nums; i++)
{
scanf("%d%d%d", &a, &b, &c);
map[a][b] = c;
map[b][a] = c;
}
prime();
}
return ;
}
Kruskal算法:
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std; struct Edge
{
int a, b, dist; Edge() {}
Edge(int a, int b, int d) :a(a), b(b), dist(d) {}
bool operator < (Edge edge) //按边长从短到长排序
{
return dist < edge.dist;
}
}; const int N = 100 + 10;
int p[N]; //并查集使用
vector<Edge> v;
int n; int find_root(int x)
{
if (p[x] == -)
return x;
else return find_root(p[x]);
} void kruskal()
{
memset(p, -, sizeof(p));
sort(v.begin(), v.end());
int ans = ;
for (int i = ; i < v.size(); i++)
{
int ra = find_root(v[i].a);
int rb = find_root(v[i].b);
if (ra != rb)
{
ans += v[i].dist;
p[ra] = rb;
}
}
printf("%d\n", ans);
} int main()
{
//freopen("hdoj1233.txt", "r", stdin);
while (scanf("%d", &n) == && n)
{
int a, b, d;
int nums = n*(n - ) / ;
v.clear();
for (int i = ; i < nums; i++)
{
scanf("%d%d%d", &a, &b, &d);
v.push_back(Edge(a, b, d));
}
kruskal();
}
}
hdoj1233 还是畅通工程(Prime || Kruskal)的更多相关文章
- HDU 1233 还是畅通工程(Kruskal算法)
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
 - HDU 1875 畅通工程再续(kruskal)
		
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
 - HDU 1232 畅通工程(Kruskal)
		
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
 - 畅通工程(kruskal算法)
		
个人心得:日了狗,WR了俩个小时才发现是少了个vector清理,我也是醉了,不过后面还是对这个有了更好得了解,一是我得算法,而是学长改进 后的算法,改进后得算法还要判断所有村庄是否在连在一起,其实我觉 ...
 - 继续畅通工程(kruskal   prim)
		
kruskal算法 #include <cstdio > #include <algorithm> using namespace std; const int MaxSi ...
 - HDU 畅通工程系列
		
畅通工程系列都是比较裸的最小生成树问题,且是中文题目,不赘述了. 1.HDU 1863 畅通工程 题意:一个省有很多村庄,其中一些之间是可以建公路的,每条公路都需要不同的代价,问代价最小的情况下将所有 ...
 - hdu1875  畅通工程再续 最小生成树并查集解决---kruskal
		
http://acm.hdu.edu.cn/showproblem.php?pid=1875 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
 - HDU1875——畅通工程再续(最小生成树:Kruskal算法)
		
畅通工程再续 Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当 ...
 - prime算法求最小生成树(畅通工程再续)
		
连着做了四道畅通工程的题,其实都是一个套路,转化为可以求最小生成树的形式求最小生成树即可 这道题需要注意: 1:因为满足路的长度在10到1000之间才能建路,所以不满足条件的路径长度可以初始化为无穷 ...
 
随机推荐
- ubuntu 使用小技巧
			
1. 查看网速 ethstatus ubuntu下用ethstatus可以监控实时的网卡带宽占用.这个软件能显示当前网卡的 RX 和 TX 速率,单位是Byte 安装 ethstatus 软件 sud ...
 - jenkins 相关默认信息
			
(1) 默认安装目录 /usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里. ( 2 ) 默认配置文件 /etc/sysconfig/jenkins:jenkins ...
 - zz图像卷积与滤波的一些知识点
			
Xinwei: 写的通俗易懂,终于让我这个不搞CV.不搞图像的外行理解卷积和滤波了. 图像卷积与滤波的一些知识点 zouxy09@qq.com http://blog.csdn.net/zouxy09 ...
 - sql  存储时空格转成问号问题
			
最近做系统,从邮件中导出邮件,上传到系统中,遇到一个奇葩的问题,如下: 通过本地文件看,文件名中是一个空格,上传至数据库后,展示就变成了问号,究其原因,发现是一个特殊字符导致: 最近认真去查了一下这个 ...
 - python学习笔记4-内置函数、匿名函数、json处理
			
print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 print(bin(10))#十 ...
 - Java并发编程原理与实战三十:CountDownLatch与CyclicBarrier 区别
			
相信每个想深入了解多线程开发的Java开发者都会遇到CountDownLatch和CyclicBarrier,大家也在网上看到各种介绍原理,代码的,以及他们区别(应付面试)的,但是很少能讲清楚:他们到 ...
 - easy-animation | Animation for Sass
			
最近因为项目缘故,勾搭上了Sass. 其实在折腾Sass之前,也有简单用过一下Less.但碍于Less提供的一些API实在让人觉得有点多余,用着就是不顺手,最后就不了了之啦. Sass之所以用起来舒服 ...
 - scrapy 爬虫踩过的坑(II)
			
同事写了个爬虫,逻辑上看着没什么问题,但是一直报错:Request url must be str or unicode…… 打印了一下url 和url 的类型,确实是 unicode 懵逼…… 打印 ...
 - 金蝶K3物料选择问题(感觉Ctrl被按住了一样)
			
金蝶K3在进入物料选择时,有时需要用Ctrl才可以进行多选,为什么有时不用Ctrl也可以进行多选,就像Ctrl被按住了一样? 解决:在物料选择界面按2次ctrl键单击物料可实现多选,再按2次ctrl则 ...
 - MySQL 5.7.17 Group Relication(组复制)搭建手册【转】
			
本博文介绍了Group Replication的两种工作模式的架构.并详细介绍了Single-Master Mode的部署过程,以及如何切换到Multi-Master Mode.当然,文末给出了Gro ...