#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
using namespace std; const int MAXV = ;//最大顶点数
const int INF = ; //n为顶点数
//MAXV为最大顶点数
int n,m;
double G[MAXV][MAXV];
double d[MAXV];// 顶点到集合S的最短距离
bool vis[MAXV] = {false};//标记数组,vis[i] == true表示已访问 double prim()
{
fill(d,d+MAXV,INF);
d[] = ;//只有0号顶点到集合s的距离为0,其他全为INF
double ans = ;//存放最小生成树的边权之和 //找n个点
for(int i=;i<n;i++)
{
int u = -,MIN = INF;//u使d[u]最小,MIN存放该最小的d[u] //每次找一个到集合距离最小的点
for(int j = ;j < n;j++)
{
if(vis[j] == false && d[j] < MIN)
{
u = j; MIN = d[j];
}
} if( u== - )
{
return -;
} //标记u为已访问
vis[u] = true; ans += d[u]; for(int v=;v < n;v++)
{
//如果v未访问,且u能到达v,并且以u为中转可以是v离集合更近
if(vis[v] == false && G[u][v] != INF && G[u][v] < d[v])
{
d[v] = G[u][v] ;
}
}
} return ans;
} struct point
{
int x;
int y;
}; point p[MAXV]; double getDis(point &a,point &b)
{
return sqrt( (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
} int main()
{
cin >> n; for(int i=;i<n;i++)
{
cin >> p[i].x;
cin >> p[i].y;
}
//初始化图G
fill(G[],G[] + MAXV * MAXV,INF); for(int i=;i<m;i++)
{
cin >> p[i].x;
cin >> p[i].y;
} for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
G[i][j] = getDis(p[i],p[j]);
}
} double ans = prim(); printf("%.2f \n",ans);
return ;
}

prim解决最小生成树问题的更多相关文章

  1. 【算法】Kruskal算法(解决最小生成树问题) 含代码实现

    Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...

  2. 最小生成树问题---Prim算法与Kruskal算法实现(MATLAB语言实现)

    2015-12-17晚,复习,甚是无聊,阅<复杂网络算法与应用>一书,得知最小生成树问题(Minimum spanning tree)问题.记之. 何为树:连通且不含圈的图称为树. 图T= ...

  3. 最小生成树问题------------Prim算法(TjuOj_1924_Jungle Roads)

    遇到一道题,简单说就是找一个图的最小生成树,大概有两种常用的算法:Prim算法和Kruskal算法.这里先介绍Prim.随后贴出1924的算法实现代码. Prim算法 1.概览 普里姆算法(Prim算 ...

  4. Python小白的数学建模课-18.最小生成树问题

    最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为最小生成树问题,如要求总线路长度最短.材料最少.成本 ...

  5. hdu1533 Going Home km算法解决最小权完美匹配

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. 最小生成树问题:Kruskal算法 AND Prim算法

    Kruskal算法: void Kruskal ( ) {     MST = { } ;                           //边的集合,最初为空集     while( Edge ...

  7. 最小生成树问题---Prim算法学习

    一个具有n个节点的连通图的生成树是原图的最小连通子集,它包含了n个节点和n-1条边.若砍去任一条边,则生成树变为非连通图:若增加一条边,则在图中形成一条回路.本文所写的是一个带权的无向连通图中寻求各边 ...

  8. Agri-Net(prim算法,最小生成树问题)

    看图便知道: 来来上代码:         #include <cstdio>#include <cstdlib>#include <cstring>#includ ...

  9. 最小生成树问题(prim算法)POJ-1258 Agri-Net

    /* 这个题很水,但是,莫名其妙runtime error一晚上,重写了一遍就又没了,很伤心! 题意很简单,大致为n个村庄,连光缆,要求连上所有村庄的长度最短. 输入n,接着是n*n的矩阵,直接用pr ...

随机推荐

  1. ubuntu 更改终端颜色

    1.$ sudo gedit .bashrc 2.PS1="\[\033[1;36;01m\]\u\[\033[00m\]\[\033[1;34;01m\]@\[\033[00m\]\[\0 ...

  2. picturebox中添加图片

    private void Form1_Load(object sender, EventArgs e) { radioButton2.Checked = true; } private void ra ...

  3. centos设置ssh安全只允许用户从指定的IP登陆

    1.编辑文件 /etc/ssh/sshd_config vi /etc/ssh/sshd_config 2.root用户只允许在如下ip登录 AllowUsers root@203.212.4.117 ...

  4. CAD绘制一个箭头(com接口)

    1 2 3 4 5 6 7 8 //绘制一个箭头  axMxDrawX1.PathMoveToEx(1000, 300, 10, 10, 0);  //设置路径下一点  axMxDrawX1.Path ...

  5. My97DatePicker 开始日期不能大于 结束日期

    My97DatePicker 日期控制,开始时间不能>结束时间,结束时间不能<开始时间 <li>日期:<input type="text" style ...

  6. Windows编译PHP7.2拓展

    转载请注明文章出处:https://tlanyan.me/windows-co... 准备工作 https://github.com/Microsoft/...下载PHP-SDK(在右边的" ...

  7. CODEVS 3500

    题目描述 输入3个数a,b,c,求a^b mod c=?输入描述          三个数a,b,c输出描述         一个数,即a^b mod c 的答案.样例输入5 10 9样例输出 4 基 ...

  8. check_nrpe: ERROR - could not complete SSL handshake

    情景描述: 发现的问题是 在监控端执行 ./check_nrpe -H 被监控端ip 正常返回nrpe版本 在被监控端执行 ./check_nrpe -H 监控端ip 报错 check_nrpe: E ...

  9. hive计算日期差

    首先,hive本身有一个UDF,名字是datediff.我们来看一下这个日期差计算的官方描述,(下面这个是怎么出来的): hive> desc function extended datedif ...

  10. cogs 290. [CTSC2000] 丘比特的烦恼

    290. [CTSC2000] 丘比特的烦恼 ★★★   输入文件:cupid.in   输出文件:cupid.out   简单对比时间限制:1 s   内存限制:128 MB 随着社会的不断发展,人 ...