还是畅通工程(MST)
Description
Input
当N为0时,输入结束,该用例不被处理。
Output
Sample Input
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
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)的更多相关文章
- hdu 1233 - 还是畅通工程(MST)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu1863 畅通工程---MST&连通
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1863 题目大意: 中文题,求MST权值,如果不连通,输出? 解题思路: 这道题帮我找出了之前模板中的 ...
- hdu-1233 还是畅通工程---MST模板
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题目大意: 求MST最小生成树 解题思路: Prim算法直接套即可 #include<b ...
- hdu-1879 继续畅通工程---确定部分边的MST
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1879 题目大意: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的 ...
- MST(最小生成树)——Prim算法——HDU 1879-继续畅通工程
Prim算法很好理解,特别是学完了迪杰斯特拉算法之后,更加能理解Prim的算法思想 和迪杰斯特拉算法差不多,由于最后要形成连通图,故任意指定一个点,作为初始点,遍历所有点,以当前最小权值的点(和迪杰斯 ...
- 畅通工程再续(MST)
畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDU 1863 畅通工程(Prim算法求解MST)
题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...
- 最小生成树(MST) prim() 算法 kruskal()算法 A - 还是畅通工程
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离. 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公 ...
随机推荐
- ajax traditional
代码如下: <script> $(function () { var s = Array("1", "2", "3"); var ...
- mysqldumpslow使用说明
mysqldumpslow使用说明 mysqldumpslow --help Usage: mysqldumpslow [ OPTS... ] [ LOGS... ] Parse and summar ...
- 取当前的地址栏的Url和url中的参数
看到这样一段代码: exports.showLogin = function (req, res) { req.session._loginReferer = req.headers.referer; ...
- iOSS--生成有logo的二维码
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- openvpn的介绍和搭建过程
本文摘自:http://www.linuxidc.com/Linux/2012-01/51702.htm,在这只是为了做个笔记使用
- WebService 入门程序(一)
第一步:定义webService接口 package com.robert.ws.service; import javax.jws.WebService; @WebService public in ...
- 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题
最基础的高斯消元了,然而我把j打成i连WA连跪,考场上再犯这种错误就真的得滚粗了. #include<cmath> #include<cstdio> #include<c ...
- Hibernate-缓存-并发策略
当多个并发的事务同时访问持久化层的缓存中的相同数据时,会引起并发问题,必须采用必要的事务隔离措施. 在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题.因此可以设定以下4种类型的并发访问策略,每 ...
- 洛谷P1202 [USACO1.1]黑色星期五Friday the Thirteenth
题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...
- 洛谷P1082 同余方程
题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正 ...