还是畅通工程

Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status

Description

某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 
 

Input

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。 
当N为0时,输入结束,该用例不被处理。 
 

Output

对每个测试用例,在1行里输出最小的公路总长度。 
 

Sample Input

3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
 

Sample Output

3
5

Hint

Hint  Huge input, scanf is recommended.
        

 #include<stdio.h>
#include<iostream>
#include<string.h>
#define maxn 0x3fff
using namespace std;
int d[] , map[][] , v[] ;//d[i]用来存放(i - 1) - th ~ i - th (point) 的权值 , v[i] 中0表示没选过 , 1表示选过
int n , m ; int prim (int start )
{
int mm , x ;
for (int i = ; i <= n ; i++)
d[i] = i == start ? : maxn ; //给 起始点 和 非起始点 涂色
for (int i = ; i <= n ; i++) {
mm = maxn ;
for (int j = ; j <= n ; j++) { //找出权值最小的边
if ( !v[j] && d[j] < mm ) {
mm = d[j] ;
x = j ;
}
}
v[x] = ;
for (int j = ; j <= n ; j++ ) {
if ( !v[j] && d[j] > map[x][j] && map[x][j] != maxn )
d[j] = map[x][j] ;
}
}
int tmp = ;
for (int i = ; i <= n ; i++)
tmp += d[i] ;
return tmp ;
} int main ()
{
// freopen ("a.txt" , "r" , stdin ) ;
int val ;
int a , b ;
int res ;
while ( cin >> n , n) {
m = n * (n - ) >> ;
memset (map , 0x3f , sizeof(map) ) ;
memset (v , , sizeof(v) ) ;
for(int i = ; i <= m ; i++ )
{
scanf ("%d%d%d", &a , &b , &val );
if( val < map[a][b] )
{
map[a][b] = val;
map[b][a] = val;
}
}
res = prim() ;
cout << res << endl ;
}
return ;
}

200 ms prim

 #include<stdio.h>
#include<algorithm>
using namespace std;
int fa[] , n , m ;
struct edge
{
int u , v , w ;
}e[]; int cmp (edge a , edge b)
{
return a.w < b.w ;
} int find (int x)
{
return fa[x] == x ? x : find(fa[x]) ;
} void kruskal ()
{
sort (e + , e + m + , cmp ) ;
int ans = , x , y ;
for (int i = ; i <= m ; i++ ) {
x = find (e[i].u) ;
y = find (e[i].v) ;
if ( x != y) {
ans += e[i].w ;
fa[x] = y ;
}
}
printf ("%d\n" , ans ) ;
}
int main ()
{
// freopen ("a.txt" , "r" , stdin ) ;
while (~ scanf ("%d" , &n ) , n ) {
for (int i = ; i <= n ; i++)
fa[i] = i ;
m = n * (n - ) >> ;
for (int i = ; i <= m ; i++ ) {
scanf ("%d%d%d" , &e[i].u , &e[i].v , &e[i].w ) ;
}
kruskal () ;
}
return ;
}

kruskal

还是畅通工程(MST)的更多相关文章

  1. hdu 1233 - 还是畅通工程(MST)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. hdu 1863 - 畅通工程(MST)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. hdu1863 畅通工程---MST&连通

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1863 题目大意: 中文题,求MST权值,如果不连通,输出? 解题思路: 这道题帮我找出了之前模板中的 ...

  4. hdu-1233 还是畅通工程---MST模板

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题目大意: 求MST最小生成树 解题思路: Prim算法直接套即可 #include<b ...

  5. hdu-1879 继续畅通工程---确定部分边的MST

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1879 题目大意: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的 ...

  6. MST(最小生成树)——Prim算法——HDU 1879-继续畅通工程

    Prim算法很好理解,特别是学完了迪杰斯特拉算法之后,更加能理解Prim的算法思想 和迪杰斯特拉算法差不多,由于最后要形成连通图,故任意指定一个点,作为初始点,遍历所有点,以当前最小权值的点(和迪杰斯 ...

  7. 畅通工程再续(MST)

    畅通工程再续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. HDU 1863 畅通工程(Prim算法求解MST)

    题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...

  9. 最小生成树(MST) prim() 算法 kruskal()算法 A - 还是畅通工程

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离. 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公 ...

随机推荐

  1. Bootstrap系列 -- 18. 表单控件大小

    前面看到的表单控件都正常的大小.可以通过设置控件的height,line-height,padding和font-size等属性来实现控件的高度设置.不过Bootstrap框架还提供了两个不同的类名, ...

  2. mustache.js

    mustache.js 是一个 Mustache 模板系统的 JavaScript 实现. Mustache 模板语法的逻辑比较简单.它用于HTML,配置文件,源代码等.它的工作方式是通过通过以哈希值 ...

  3. [USACO2004][poj1989]The Cow Lineup(乱搞)

    http://poj.org/problem?id=1989 题意:求一个序列的最短非子序列长度l,即长度小于l的所有数的排列都是原序列的子序列(不一定要连续的),求l得最小值. 分析: 我们从左到右 ...

  4. 第二十一课:js属性操作的兼容性问题

    上一课主要讲了属性的概念,用法,固有属性和自定义属性的区别,class属性操作的方法等,这一课主要讲一些有关属性操作的兼容性问题. IE6-IE8在一些表示URL的属性会返回补全的改过编码的路径,比如 ...

  5. json_decode详解

    json_decode是php5.2.0之后新增的一个PHP内置函数,其作用是对JSON 格式的字符串进行编码.    json_decode的语法规则:json_decode ( string $j ...

  6. ”耐撕“团队 2016.3.21 站立会议3 2 1 GO!

    ”耐撕“团队 2016.3.21 站立会议 时间:2016.3.21  ① 17:20-17:45  ②17:55-18:10  总计40分钟 成员: Z 郑蕊 * 组长 (博客:http://www ...

  7. SQL基础知识总结(一)

    1.union 和union all 操作符 1)union内部的select语句必须拥有相同的列,列也必须有相似的数字类型.同时,每条select语句中列的顺序相同. union语法(结果集无重复) ...

  8. Gson 的使用

    Gson 的使用简介Gson 是 Google 开发的Java API,用于转换Java对象 和 Json 对象. 使用Maven 依赖<dependency> <groupId&g ...

  9. selenium ide 录制回放link链接报错

    回放是出现以下错误: 也就是回放点击打开新的链接时出现这个错误, 这个问题说的是 点击此链接会新打开一个窗口 selenium1是不支持多窗口切换的 因此会卡在这里,也就录制不支持这个操作,但是很多书 ...

  10. nmap常用命令

    1) 获取远程主机的系统类型及开放端口 nmap -sS -P0 -sV -O <target> 这里的 < target > 可以是单一 IP, 或主机名,或域名,或子网 - ...