hdoj 1233 还是畅通工程(最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233
思路分析:该问题为最小生成树问题,使用kruskal算法或者prim算法即可解决;
代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int MAX_N = + ;
int u[MAX_N], v[MAX_N], w[MAX_N];
int p[MAX_N], r[MAX_N]; inline int cmp(const int i, const int j) { return w[i] < w[j]; }
int Find(int a)
{
if (p[a] == a)
return a;
else
return p[a] = Find(p[a]);
} int Union(int a, int b)
{
int p_a = Find(a);
int p_b = Find(b); if (p_a == p_b)
return -;
if (p_a > p_b)
p[p_b] = p_a;
else
p[p_a] = p_b;
return ;
} inline int Kruskal(int road_num)
{
int ans = ; for (int i = ; i <= road_num; ++i)
p[i] = i;
for (int i = ; i < road_num; ++i)
r[i] = i;
sort(r, r + road_num, cmp);
for (int i = ; i < road_num; ++i)
{
int e = r[i];
int x = Find(u[e]);
int y = Find(v[e]);
if (x != y)
{
ans += w[e];
Union(x, y);
}
}
return ans;
} int main()
{
int ver_num;
int ver_1, ver_2, len; while (scanf("%d", &ver_num) != EOF && ver_num)
{
int road_num = ver_num * (ver_num - ) / ;
for (int i = ; i < road_num; ++i)
{
scanf("%d %d %d", &ver_1, &ver_2, &len);
u[i] = ver_1;
v[i] = ver_2;
w[i] = len;
}
int ans = Kruskal(road_num);
printf("%d\n", ans);
}
return ;
}
hdoj 1233 还是畅通工程(最小生成树)的更多相关文章
- hdoj 1233 还是畅通工程---最小生成树---prime算法
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1233 可以用Kruskal来做,不过当图的边比较稠密的时候用prime会更快一些. AC代码:296MS ...
- Kruskal HDOJ 1233 还是畅通工程
题目传送门 /* 最小生成树之kruskal算法--并查集(数据结构)实现 建立一个结构体,记录两点和它们的距离,依照距离升序排序 不连通就累加距离,即为最小生成树的长度 */ #include &l ...
- Hdoj 1233.还是畅通工程 题解
Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- HDU 1233 还是畅通工程 (最小生成树)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1233.还是畅通工程-最小生成树(Prime)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin.end.weight,分别表示路的起始村庄,结束村庄和村庄之间的距离. 求索要修的路的最短距离 解 ...
- HDU 1233 还是畅通工程(最小生成树,prim)
题意:中文题目 思路:prim实现,因为有n*(n-1)/2条边,已经是饱和的边了,prim比较合适. (1)将点1置为浏览过,点1可以到达其他每个点,所以用low[i]数组记录下目前到达i点的最小长 ...
- hdu 1233 还是畅通工程 (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
随机推荐
- java 调用jdbc 实现excel和csv的导入和导出
jdbc 的连接 实体类 package com.gpdi.mdata.web.manage.database.data;public class DBQueryData {private Strin ...
- 算法——A*——HDOJ:1813
Escape from Tetris Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- eclipse run on server 浏览器启动设置
- ngCookies模块
Angular中ngCookies模块介绍 1.Cookie介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在 ...
- Zepto Api参考
zepto API参考 简介 Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. 设计目的 ze ...
- jasmine官方api参考
jasmine 简介 jasmine 是一个行为驱动开发(TDD)测试框架, 一个js测试框架,它不依赖于浏览器.dom或其他js框架 jasmine有十分简介的语法 使用 从 这里 下载 stant ...
- SSD常见问题的技术分析
AHCI对性能的影响 AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,是一种相比老旧的“IDE虚拟模式”更适合新一代SATA存储设备通信的协议 ...
- 【Delphi内联汇编学习1】Delphi与汇编
我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式 ...
- 将内部部署网络和 Windows Azure 集成的新选项: 使用AT&T
关于云计算的主要对话围绕着向云迁移展开.今天,我们宣布与 AT&T 结为战略联盟,共同为客户提供云计算服务.这一合作伙伴关系将授权客户访问 Windows Azure,作为其现有数据中心的逻辑 ...
- WS_CLIPCHILDREN与WS_CLIPSIBLINGS 收藏
英文单词解释clip:夹子.子弹夹.回形针:夹住,修剪sibling:同胞兄弟或姐妹overlapped:重叠 这两个Window Stype的特性与异同素来不太清楚,今日作一笔记:MSDN的解释为: ...