传送门:http://poj.org/problem?id=1287

题意:给出n个点 m条边 ,求最小生成树的权

思路:最小生树的模板题,直接跑一遍kruskal即可

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 5005;
struct node
{
int u;
int v;
int w;
bool operator< (const node &a)
{
return w < a.w;
}
} edges[maxn];
int f[maxn];
int find(int x)
{
return f[x] = f[x] == x ? x : find(f[x]);
}
int kruskal(int n, int m)
{
for(int i = 1; i <= n; i++)
f[i] = i;
int cnt = 0;
int ans = 0;
for(int i = 1; i <= m; i++)
{
int u = edges[i].u;
int v = edges[i].v;
int w = edges[i].w;
int t1 = find(u);
int t2 = find(v);
if(t1 != t2)
{
ans += w;
f[t1] = t2;
cnt++;
}
if(cnt == n - 1)
break;
}
if(cnt < n - 1)
return -1;
else
return ans;
}
int main()
{
int n;
while(scanf("%d", &n), n)
{
int m;
scanf("%d", &m);
for(int i = 1; i <= m; i++)
{
scanf("%d%d%d", &edges[i].u, &edges[i].v, &edges[i].w);
}
sort(edges + 1, edges + m + 1);
int ans = kruskal(n, m);
cout << ans << endl;
}
}

最新文章

  1. [ZOJ2760]How Many Shortest Path(floyd+最大流)
  2. linux install sublime_text3
  3. 傅里叶变换 fft_generic halcon
  4. virsh default启动失败原因分析及解决
  5. input内容改变触发事件,兼容IE
  6. DATE 使用
  7. 蓝桥网试题 java 基础练习 矩形面积交
  8. POPTEST老李谈钩子
  9. iOS,点击button拨打电话
  10. 【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用
  11. 历次PCB板修改意见汇总
  12. Linux网络管理-相关笔记【自用】
  13. Python之路(第五篇) Python基本数据类型集合、格式化、函数
  14. .NetCore Linux中安装Grafana界面及配置InfluxDB相关设置
  15. 20172319 2018.04.01-04.11 《Java程序设计》第5周学习总结
  16. OD基本汇编指令
  17. linux 服务器删除大文件之后不释放存储空间的解决办法
  18. M0 M4之UART初始化
  19. Java笔记19:Java匿名内部类
  20. pg_buffercache

热门文章

  1. VS2013+HALCON13
  2. node - 获取当前时间并格式化
  3. 指令——touch
  4. log4j1-x使用
  5. [APIO2012]派遣 可并堆
  6. PyCharm下创建并运行我们的第一个Django项目
  7. yum 安装 Mysql error ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES) 开启远程连接 修改登入密码 忘记root密码 配置防火墙规则 随手mark
  8. UVA - 10384 The Wall Pusher(推门游戏)(IDA*)
  9. 几道简单的线段树入门题 POJ3264&amp;&amp;POJ3468&amp;&amp;POJ2777
  10. 重新修改AD中PCB的形状快捷键