//克鲁斯卡尔
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = ;
struct node
{
int begin, end, len;
}cun[maxn];
int n, fa[maxn], ans, m; bool cmp(node a, node b)
{
return a.len<b.len; //按长度有小到大排序
} void init()
{
for (int i = ; i <= n; i++)
{
fa[i] = i;
}
} int find(int x)
{
if (x == fa[x])
return fa[x];
else
return fa[x] = find(fa[x]);
} void join(int a, int b)
{
a = find(a);
b = find(b);
if (a != b)
fa[b] = a;
} int kruskal()
{
sort(cun, cun + m, cmp);
init(); //初始化并查集
ans = ;
for (int i = ; i<m; i++)
{
if (find(cun[i].begin) != find(cun[i].end)) //一条边的两个端点不在同一个集合,则选他,并合并
{
join(cun[i].begin, cun[i].end);
ans += cun[i].len;
}
}
return ans;
} int main()
{
while (cin >> n)
{
if (n == ) break;
m = n*(n - ) / ;
for (int i = ; i<m; i++)
cin >> cun[i].begin >> cun[i].end >> cun[i].len;
cout << kruskal() << endl;
}
return ;
}
 //prim
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std; #define INF 0x7fffffff
# define MAXN
typedef long long int LL; LL n, m;
LL cmpa[MAXN][MAXN], book[MAXN], dis[MAXN]; int main()
{
LL a, b, weight, ans, p, q, f1, f2, minn, mark;
while (scanf("%I64d", &n) && n)
{
//初始化 这题prime算法合适,边那摩多,都是完全图了
for (LL i = ; i<MAXN; i++)
{
dis[i] = INF;
for (LL j = ; j<MAXN; ++j)
cmpa[i][j] = INF;
} memset(book, , sizeof(book));
ans = ; for (LL i = ; i<n*(n - ) / ; ++i)
{
scanf("%I64d %I64d %I64d", &a, &b, &weight);
cmpa[a][b] = cmpa[b][a] = weight;
} //连通图
book[] = ;
dis[] = -; for (LL t = ; t<n; ++t)
{
for (LL i = ; i <= n; ++i)
{//更新dis中的值
for (LL j = ; j <= n; ++j)
{
if (book[j] && dis[i]>cmpa[i][j])
{ //j在树中
dis[i] = cmpa[i][j];
}
}
} //选点建树
minn = INF, mark = ;
for (LL i = ; i <= n; ++i)
{
if (book[i])
continue;
else
{
if (dis[i] < minn)
{
minn = dis[i];
mark = i;
}
}
} if (minn != INF)
{
ans += minn;
book[mark] = ;
dis[mark] = -;
} }
cout << ans << endl; }
return ;
}

hdu1233 还是畅通工程 基础最小生成树的更多相关文章

  1. hdu1233 继续畅通工程 (最小生成树——并查集)

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

  2. HDU1233 还是畅通工程【最小生成树】

    题意: 求出连接各个村庄最小的公路总长度,把最小公路总长度求出来. 思路: 最小生成树原理,带入数据求得. 代码: prim: #include<iostream> #include< ...

  3. hdu1879 继续畅通工程 基础最小生成树

    #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> u ...

  4. hdu1863 畅通工程 基础最小生成树

    #include <iostream> #include <cstdio> #include <algorithm> #define N 110 #define M ...

  5. HDU-1233 还是畅通工程 (prim 算法求最小生成树)

    prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  6. 最小生成树: HDU1233还是畅通工程

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

  7. HDU1875——畅通工程再续(最小生成树:Kruskal算法)

    畅通工程再续 Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当 ...

  8. HDU1879--继续畅通工程(最小生成树)

    Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计 ...

  9. HDU1233--还是畅通工程(最小生成树)

    Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...

随机推荐

  1. zookeeper 服务端上下线,客户端感知

    package pfs.y2017.m11.zookeeper.demo03; import java.util.ArrayList; import java.util.List; import or ...

  2. 【java】itoo项目实战之hibernate 批量保存优化

    在itoo中.基本上每一个系统都有一个导入功能,大量的数据填写进入excel模板中.然后使用导入功能导入的数据库中,这样能够大大的提高工作效率. 那么导入就涉及到了批量保存数据库的问题了. 那么通常情 ...

  3. SGU 194 Reactor Cooling 无源汇带上下界可行流

    Reactor Cooling time limit per test: 0.5 sec. memory limit per test: 65536 KB input: standard output ...

  4. openwrt 编译 gmediarender

    output_gstreamer.o: In function `my_bus_callback': output_gstreamer.c:(.text+0xf68): undefined refer ...

  5. UI类继承关系图

  6. 关于yum的一些基本的东西

    1 sqlite数据库的使用 第一,某个centos版本的包相关的信息都放在一个服务器端的sqlite数据库文件中,yum会下载到本地,进行包安装的时候用. 第二,安装的历史记录放在sqlite数据库 ...

  7. Java中的final具体解释以及用途实战

    浅析Java中的finalkeyword 谈到finalkeyword,想必非常多人都不陌生.在使用匿名内部类的时候可能会经经常使用到finalkeyword. 另外.Java中的String类就是一 ...

  8. C++11 std::function、std::bind和lambda表达式

    参考博客: C++可调用对象详解-https://www.cnblogs.com/Philip-Tell-Truth/p/5814213.html 一.关于std::function与std::bin ...

  9. js中的逻辑与(&&)与逻辑或(||)

    var foo = 1; var bar = 0; var tar = false; var baz = 2; 一.js中的逻辑与(&&) 1.当第一个数为true时,返回第二个数: ...

  10. HDU2609 How many —— 最小表示法

    题目链接:https://vjudge.net/problem/HDU-2609 How many Time Limit: 2000/1000 MS (Java/Others)    Memory L ...