//克鲁斯卡尔
#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 ;
}

最新文章

  1. 俄罗斯方块(Java实现)
  2. MySQL学习
  3. [转载]Ubuntu17.04(Zesty Zapus)路线图发布:2017年4月13日发布
  4. 无废话SharePoint入门教程三[创建网站集和网站]
  5. Nginx反向代理配置可跨域
  6. 基于MFC的单文档,多文档,对话框应用程序
  7. Fisher-Yates 乱序算法
  8. UVA 11076 Add Again 计算对答案的贡献+组合数学
  9. HDU 4940(杭电更多的学校#7 1006) Destroy Transportation system(到处乱混)
  10. react-router 踩坑记
  11. 关闭Excel提示文件格式和扩展名不匹配的警告框
  12. 关于离线底图和离线shp文件的加载
  13. html-&gt;html5-&gt;css-&gt;javascript(js)-&gt;jQuery-&gt;AJAX-&gt;JSON
  14. 数据结构Java版之交换算法(一)
  15. P4178 Tree(点分治)
  16. php中header函数参数的Cache-control的使用方法
  17. 使用nexus3.x搭建maven私服
  18. 苹果电脑自带python安装tensorflow一直有问题
  19. position:absolute在IE8浏览器下无法显示正确位置
  20. Vue.js,select中的option用ajax想循环控制值的显示 v-model可以实现但提示报错,这是为什么?

热门文章

  1. IconTabPageIndicator
  2. 解决编译twrp3.0.3遇到的问题
  3. linux 命令之 watch
  4. ditaa - 把ascii图形转成图片
  5. 安卓动态逆向分析工具--Andbug&amp;Androguard
  6. Mac 上VitrualBox安装CentOS6.5 调整root分区的大小
  7. STL--map用法
  8. Printf可变參数使用
  9. Service-level agreement
  10. Maven 用法