//克鲁斯卡尔
#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. adb pull 与 push

    adb pull <remote> <local> Copies a specified file from an emulator/device instance to yo ...

  2. JDK and JRE File Structure JAVA_HOME HotSpot优化技术

    https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jdkfiles.html Java Platform, Standard ...

  3. 逼近法(例 poj3208、poj1037)

    ​ 逼近法是一种很奇妙的算法,以为"逼近"这一种思想在很多的算法中都有体现.诸如:像我们的二分答案,不断地排除决策集合的一半以接近我们的最终答案:我们的树上倍增求 \(LCA\) ...

  4. MessageBox_ swt

    SWT有不同类型的对话框.有些对话框具有特殊的属性. MessageBox messageBox = new MessageBox(shell, SWT.OK|SWT.CANCEL); if (mes ...

  5. 用secureCRT ssh登陆不显示用户名和路径解决方案 分类: 软件工具学习 2015-03-18 16:52 36人阅读 评论(0) 收藏

    方法1         每次开始的时候输入 bash 虽然只能保存一次,但是简便. 方法2 用       vi ~/.bash_profile   编辑这个文件,  有时会提示这个文件不存在,直 ...

  6. vue2-editor富文本基础使用方法

    vue2-editor的入门使用准备工作: 使用 npm install vue2-editor --save 安装到项目中去: 使用 在需要的单文件内引入 import { VueEditor } ...

  7. ES6 中的let 声明变量

    1.let是声明的是块级变量,不会污染全局,一般条件与循环中会用到: 2.let  不可以变量提升: 3.let不遵循作用域,一个作用域内如果有该变量,就不会到全局去找,也不可以在一个作用域重复声明一 ...

  8. 完美解决pip install scrapy,安装Scrapy错误:Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

    1,在Python3.6 安装Scrapy 出现以下报错 2,错误分析 红色报的错误指向的是Twisted 1,Twisted 没安装上 2,Twisted 没安装成功 3,Twisted 版本与Py ...

  9. 安全性测试--CSRF攻击

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  10. 一步一步学Silverlight 2系列(11):数据绑定

    概念 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...