POJ 1287 Networking【kruskal模板题】
2024-08-29 22:45:19
传送门: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;
}
}
最新文章
- [ZOJ2760]How Many Shortest Path(floyd+最大流)
- linux install sublime_text3
- 傅里叶变换 fft_generic halcon
- virsh default启动失败原因分析及解决
- input内容改变触发事件,兼容IE
- DATE 使用
- 蓝桥网试题 java 基础练习 矩形面积交
- POPTEST老李谈钩子
- iOS,点击button拨打电话
- 【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用
- 历次PCB板修改意见汇总
- Linux网络管理-相关笔记【自用】
- Python之路(第五篇) Python基本数据类型集合、格式化、函数
- .NetCore Linux中安装Grafana界面及配置InfluxDB相关设置
- 20172319 2018.04.01-04.11 《Java程序设计》第5周学习总结
- OD基本汇编指令
- linux 服务器删除大文件之后不释放存储空间的解决办法
- M0 M4之UART初始化
- Java笔记19:Java匿名内部类
- pg_buffercache
热门文章
- VS2013+HALCON13
- node - 获取当前时间并格式化
- 指令——touch
- log4j1-x使用
- [APIO2012]派遣 可并堆
- PyCharm下创建并运行我们的第一个Django项目
- yum 安装 Mysql error ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES) 开启远程连接 修改登入密码 忘记root密码 配置防火墙规则 随手mark
- UVA - 10384 The Wall Pusher(推门游戏)(IDA*)
- 几道简单的线段树入门题 POJ3264&;&;POJ3468&;&;POJ2777
- 重新修改AD中PCB的形状快捷键