题目

求最小生成树


分析

prim & kruskal


Kruskal代码

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
struct node{int u,v; double w;}e[9901];
double x[101],y[101]; int m,nod,f[101];
double o(double s){return s*s;}
bool cmp(node x,node y){return x.w<y.w;}
int getf(int x){return (f[x]==x)?x:f[x]=getf(f[x]);}
int main(){int n,k; double s=0;scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lf%lf",&x[i],&y[i]);f[i]=i; for (int j=1;j<i;j++)e[++m].w=sqrt(o(x[i]-x[j])+o(y[i]-y[j])),e[m].u=i,e[m].v=j;//勾股定理}stable_sort(e+1,e+1+m,cmp);while (--n){int k1=getf(e[++nod].u); int k2=getf(e[nod].v);if (k1!=k2) f[k1]=k2,s+=e[nod].w; else n++;}printf("%.2lf",s); return 0;
}

Prim代码

#include <cstdio>
#include <climits>
#include <cmath>
using namespace std;
double a[101][101],lowcost[101],x[101],y[101]; bool v[101];
double o(double s){return s*s;}
int main(){int n,k; double min,s=0;scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lf%lf",&x[i],&y[i]);for (int j=1;j<=n;j++)if (i!=j){double sum=sqrt(o(x[i]-x[j])+o(y[i]-y[j]));//勾股定理a[i][j]=sum; a[j][i]=sum;}lowcost[i]=a[1][i];} v[1]=1;for (int i=1;i<=n-1;i++){min=10001;for (int j=1;j<=n;j++)if (lowcost[j]<min&&!v[j]){min=lowcost[j];k=j;}s+=min;v[k]=1;for (int j=1;j<=n;j++) if (a[k][j]<lowcost[j]) lowcost[j]=a[k][j];}printf("%.2lf",s); return 0;
}

#最小生成树,prim,kruskal#poj 2560 Freckles 雀斑相关推荐

  1. 数据结构实验之图论六:村村通公路(最小生成树Prim/Kruskal)

    Description 当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出 ...

  2. HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)

    原题地址 http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:(最小生成树裸题)有N个村庄,给出村庄两两之间的距离,要求铺设公路,使得任何两个村庄间都可 ...

  3. zoj 1586 QSNetwork 最小生成树 Prim Kruskal

    题意: 一个图,不止边有权值,点也有权值 Input: 输入的第一行包含一个整数t,它指示数据集的数量. 第二行中有T个数据集. 在单个数据集中,第一行包含一个整数n,表示qs的数目. 第2行包含n个 ...

  4. poj1861 最小生成树 prim amp; kruskal

    // poj1861 最小生成树 prim & kruskal // // 一个水题,为的仅仅是回味一下模板.日后好有个照顾不是#include <cstdio> #include ...

  5. 最小生成树之Kruskal

    模板题,学习一下最小生成树的Kruskal算法 对于一个连通网(连通带权图,假定每条边上的权均为大于零的实数)来说,每棵树的权(即树中所有边的权值总和)也可能不同 具有权最小的生成树称为最小生成树 生 ...

  6. poj 2031 BuildingaSpaceStation 最小生成树 Prim、Kruskal

    题意: 三维空间里有一些球,给出球心坐标和半径,搭建通路,使得他们能够相互连通.如果两个球相交或者相切,则算已连通,无需再搭桥.求搭建通路的最小费用(费用就是边权,就是两个球面之间的距离). Inpu ...

  7. 最小生成树算法详解(prim+kruskal)

    最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...

  8. ReviewForJob——最小生成树(prim + kruskal)源码实现和分析

    [0]README 1)本文旨在给出 ReviewForJob--最小生成树(prim + kruskal)源码实现和分析, 还会对其用到的 技术 做介绍: 2)最小生成树是对无向图而言的:一个无向图 ...

  9. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

最新文章

  1. 为什么c相电路在前面_三相电路分析
  2. 无刷电机和有刷电机的详解区别
  3. 国庆作业 刷题0929
  4. 漫步微积分十九——牛顿法解方程
  5. 查看mysql是否启用安全审计_如何查看oracle是否开启了审计功能?
  6. System.arraycopy()实现数组之间的复制
  7. Java中double类型四舍五入的方法总结
  8. 基于C语言+sqlite3的FTP爬虫和搜索引擎系统
  9. MQL5 信号的优势
  10. Linux中文显示乱码问题解决方法(编码查看及转换)
  11. 算法【打渔晒网问题】
  12. 《Rework》语句摘录
  13. 旁观面经-02-开发岗总结版
  14. 系统进程里的edpa.exe是什么?
  15. Java + OpenCV 实现图片修复(去水印)(JavaCV)
  16. Aarch64过程调用标准
  17. 【Linux/shell】bash命令和sh命令的区别(20210109)
  18. 火车票提前11天电话95105105订票流程~预知步骤节省时间
  19. PDF Search 10.3 PDF文档搜索工具
  20. 小程序毕设作品之微信在线教育视频点播学习小程序毕业设计(3)后台功能

热门文章

  1. kdevelop launch configuration
  2. Top2:CNN 卷积神经网络实现猫狗图片识别二分类
  3. 比亚迪鸣响汽车芯片第一枪
  4. Centos7安装SonarQube常见问题
  5. 程序员麦兜【编程笔记】-线程的概念及创建
  6. Bezier曲线(附Python实现代码)
  7. ios动画-新浪微博app点击发微博按钮动画的实现
  8. Python 判断密码等级的强弱,不使用正则表达式
  9. mousewheel 取消_对话框不接收WM_MOUSEWHEEL消息,咋办?
  10. 阿里云的ECS共享型n4可以安装宝塔吗?