最小生成树(无向图)

Kruskal

给所有边按从小到大排序 形成环则不选择(利用并查集)

P1546 最短网络   https://www.luogu.com.cn/problem/P1546

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
typedef long long ll;
using namespace std; struct Node {
int x, y, w;
friend bool operator < (const Node& a, const Node& b) {
return a.w < b.w;
}
}; Node a[];
int pre[]; int Find(int x) {
return pre[x] == x ? x : pre[x] = Find(pre[x]);
} int main() {
int n, k, cnt = ;
scanf("%d", &n);
for (int i = ; i < n; i++) {
pre[i] = i;
for(int j=;j<n;j++){
scanf("%d", &k);
if (j > i) { //矩阵只需判断一半
a[cnt].x = i;
a[cnt].y = j;
a[cnt++].w = k;
}
}
}
sort(a, a + cnt);
int ans = ;
int p = ;
for (int i = ; i <cnt; i++) {
if (Find(a[i].x) != Find(a[i].y)) {
ans += a[i].w;
pre[Find(a[i].x)] = a[i].y;
p++;
if (p == n - ) break;
}
}
printf("%d\n", ans);
return ;
}

HDU 1875 http://acm.hdu.edu.cn/showproblem.php?pid=1875

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
typedef long long ll;
using namespace std; struct Node {
int x, y;
double w;
friend bool operator < (const Node& a, const Node& b) {
return a.w < b.w;
}
}; Node a[]; //数组注意开大
int pre[];
double x[];
double y[]; int Find(int x) {
return pre[x] == x ? x : pre[x] = Find(pre[x]);
} double dis(double x1, double y1, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
int T,c;
scanf("%d", &T);
while (T--) {
int cnt = ;
scanf("%d", &c);
for (int i = ; i < c; i++) {
pre[i] = i;
scanf("%lf%lf", &x[i], &y[i]);
for (int j = ; j < i; j++) {
double dist = dis(x[i], y[i], x[j], y[j]);
if(dist>=10.0&&dist<=1000.0){
a[cnt].x = i;
a[cnt].y = j;
//printf("%d %d\n", a[cnt].x, a[cnt].y);
a[cnt++].w = dist;}
}
}
sort(a, a + cnt);
double ans = ;
int p = ;
for (int i = ; i < cnt; i++) {
if (Find(a[i].x) != Find(a[i].y)) {
ans += a[i].w ;
pre[Find(a[i].x)] = a[i].y;
p++;
if (p == c - ) break;
}
}
if (p == c - ) printf("%.1f\n", ans*);
else printf("oh!\n");
}
return ;
}

最新文章

  1. Hadoop 全分布模式 平台搭建
  2. 转载:《TypeScript 中文入门教程》 16、Symbols
  3. Hadoop学习笔记: 安装配置Hive
  4. zabbix利用mutt和msmtp配置邮件报警
  5. 分享大家一个背景为下雪的JQuery
  6. 混合式APP开发中中间件方案Rexsee
  7. ubuntu下java环境变量配置
  8. mysql 与 oracle 比较(一)group by 容易产生的误解
  9. Smart210学习-----lcd驱动
  10. 黄聪:《跟黄聪学WordPress主题开发》
  11. apache重写规则自动追加查询参数QSA
  12. c语言知识(1)
  13. JAVA开发CHECK STYLE
  14. JavaScript拖拽
  15. JS之路——字符串函数
  16. VB6.0数据库开发五个实例——罗列的总结
  17. dp related problems (update continuously)
  18. 前端总结&#183;基础篇&#183;CSS(一)布局
  19. 画线动画——SVG版和纯CSS版
  20. Nginx的安装与部署

热门文章

  1. 关于syx的npy
  2. activity带参跳转和界面登录
  3. 使用nginx做反向代理来访问tomcat服务器
  4. vDom和domDiff
  5. Python 3.8 新功能【新手必学】
  6. PHPExcel方法总结
  7. Linux间传输文件 scp
  8. DevOps - 实施原则
  9. Problem J. Joseph’s Problem 约瑟夫问题--余数之和
  10. 接口测试基础----postman、jmeter