很裸地求最小生成树的题目。题意就不多说了,最重要的就是记录一下学会了prim算法。

初学prim,给我的第一感觉就是和dijkstra好像啊,感觉两者的区别还是有的:

1:prim是求最小生成树的算法。

  dijkstra是求最短路的算法。

2:prim中dis保存的是未加入集合的点,加入集合需要的代价,而已经加入集合中的点加入花费代价是其他变量保存的。

  dijkstra中dis保存的是从起点到当前点所花费的最小代价。

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std; const int INF = 0x3f3f3f3f;
const int maxn = ;
//map记录路径,vis记录是否加入集合,dis记录未加入集合的点与集合的最短距离
int map[maxn][maxn], vis[maxn], dis[maxn], n; int prim ()
{
int i, sum;
memset(vis, , sizeof(vis));//标记所有的点都在集合外
sum = ;//总花费记为0
vis[] = ;//把1当成起始集合
for (i=; i<=n; i++)//初始化dis
dis[i] = map[][i];
for (int j=; j<n; j++)
{//因为已经加入集合了一个点,所以只需循环n-1次
int min = INF, index;
for (i=; i<=n; i++)//寻找加入集合的最优点
if (!vis[i] && dis[i]<min)
{
min = dis[i];
index = i;
}
sum += min;//把最优点加入集合
vis[index] = ;
for (i=; i<=n; i++)//对未加入集合的点加入到集合所用的花费进行优化
if (!vis[i] && dis[i]>map[index][i])
dis[i] = map[index][i];
}
return sum;
}
int main ()
{
int s;
while (scanf ("%d", &n)!= EOF)
{
for (int i=; i<=n; i++)
for (int j=; j<=n; j++)
{
scanf ("%d", &s);
map[i][j] = s;
}
printf ("%d\n", prim ());
}
return ;
}

poj 1258 Agri-Net prim模板 prim与dijkstra的区别的更多相关文章

  1. poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题

    poj 1251  && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...

  2. POJ 1258 Agri-Net 【Prime】模板题

    题目链接>>> 题目大意:     给你N*N矩阵,表示N个村庄之间的距离.FJ要把N个村庄全都连接起来,求连接的最短距离(即求最小生成树).解析如下: #include <c ...

  3. HDU1875+Prim模板

    https://cn.vjudge.net/problem/HDU-1875 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府 ...

  4. HDU 1223 还是畅通工程(最小生成树prim模板)

    一个很简单的prim模板,但虽然是模板,但也是最基础的,也要脱离模板熟练打出来 后期会更新kruskal写法 #include<iostream> #include<cstdio&g ...

  5. 最小生成树 10.1.5.253 1505 poj 1258 http://poj.org/problem?id=1258

    #include <iostream>// poj 1258 10.1.5.253 1505 using namespace std; #define N 105 // 顶点的最大个数 ( ...

  6. POJ 1258 Agri-Net|| POJ 2485 Highways MST

    POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...

  7. 【图论】信手拈来的Prim,Kruskal和Dijkstra

    关于三个简单的图论算法 prim,dijkstra和kruskal三个图论的算法,初学者容易将他们搞混,所以放在一起了. prim和kruskal是最小生成树(MST)的算法,dijkstra是单源最 ...

  8. 求最小生成树(暴力法,prim,prim的堆优化,kruskal)

    求最小生成树(暴力法,prim,prim的堆优化,kruskal) 5 71 2 22 5 21 3 41 4 73 4 12 3 13 5 6 我们采用的是dfs的回溯暴力,所以对于如下图,只能搜索 ...

  9. POJ 1258:Agri-Net Prim最小生成树模板题

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45050   Accepted: 18479 Descri ...

随机推荐

  1. OpenWRT解决因PPPOE丢包导致频繁掉线问题

    其关键在于这两个参数 lcp-echo-interval 1   #发送间隔秒 lcp-echo-failure 5    #5次未响应断开 因为OpenWRT默认的设置为1秒发送一次 5次没有响应就 ...

  2. 使用WIN32汇编语言实现一个基本windows窗体的过程分析

    一个常规的windows窗体一般都是一些一样的构造.你假设想要更改一些个性化的设置,你能够在这个一般的模板伤添砖加瓦.构造自己比較喜欢的类型.下边就分析一下一般的windows窗体的一般模板. 一. ...

  3. C#中list比数组效率低多少

    对于List,即长度不确定的数组而言,十万笔数据*12倍,就是120万笔数据,只需要93ms左右   换成了二维数组,效果也是差不多,78ms,可见list的效率只比double差一点点  

  4. VB和VB.NET有什么区别

    作为VB6.0的后续版本,VB.NET更加稳定,而且完全面向对象.也许你还记得,VB6.0部支持继承.重载和接口,所以不是真正面向对象的.而VB.NET则支持这些面向对象特性.VB6.0有两个薄弱环节 ...

  5. Office WORD WPS如何取消拼写检查

    1 审阅-修订-修订选项-拼写,全部取消勾选.

  6. win8 metro 自己写摄像头录像项目

    这是要求不适用CameraCaptureUI等使用系统自带的 camera  UI界面.要求我们自己写调用摄像头摄像的方法,如今我把我的程序贴下: UI界面的程序: <Page x:Class= ...

  7. poj1904 二分图匹配+强连通分量

    http://poj.org/problem?id=1904 Description Once upon a time there lived a king and he had N sons. An ...

  8. hdoj 5093 Battle ships 【二分图最大匹配】

    题目:pid=5093" target="_blank">hdoj 5093 Battle ships 题意:给你一个n*m的图,图中有冰山 '# ',浮冰 'o' ...

  9. HLJU 1220: AC100天 (枚举)

    1220: AC100天 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 89  Solved: 12 [id=1220">Submit ...

  10. 李洪强iOS开发之函数式 编程初窥

    函数式 编程初窥   最近在学习Erlang和Python.Erlang是完全的函数式编程语言,Python语言是面向对象的语言,但是它的语法引入了大量的函数式编程思想.越研究越觉得函数式的编程思路可 ...