http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186

最小生成树,最重要的是了解思想

稠密图用Prim,稀疏图用Kruskal

K(每次找最小的边连接,一条边连接两个点,所以单路就可以了)

 1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int bin[110];
5 struct node
6 {
7 int u,v,w;
8 }q[10001];
9
10 int cmp(const void *a,const void *b)//按距离从小到大排序
11 {
12 return (*(node *)a).w-(*(node *)b).w;
13 }
14 int find(int a)
15 {
16 if(a==bin[a])
17 return a;
18 else
19 bin[a]=find(bin[a]);
20 };
21 int main()
22 {
23 int n,m,i,j,sum,num;
24 int x,y;
25 while(~scanf("%d%d",&n,&m))
26 {
27 sum=0; num=0;
28 for(i=1; i<=n; i++)
29 bin[i]=i;
30 for(i=0; i<=m-1; i++)
31 scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w);
32 qsort(q,m,sizeof(q[0]),cmp);
33 这是重点思想 for(i=0; i<=m-1; i++)
34 {
35 x=find(q[i].u); y=find(q[i].v);
36 if(x!=y) //检查是否连通
37 {
38 sum+=q[i].w;//没连通的话加上距离
39 num++; //城市+1
40 bin[x]=y;
41 }
42 if(num==n-1)
43 break;
44 }
45 printf("%d\n",sum);
46 }
47 }
Prim()

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 1000001
  4. int map[110][110];
  5. int vis[110];
  6. int dis[110];
  7. int n,m;
  8. void prim()
  9. {
  10. int ans=0;
  11. int i,j;
  12. memset(vis,0,sizeof(vis));
  13. memset(dis,0,sizeof(dis));
  14. for(i = 1; i <= n; i++)
  15. dis[i] = map[1][i];
  16. vis[1] = 1;
  17. for(i = 1; i <= n-1; i++)
  18. {
  19. int pos;
  20. int min;
  21. min = N;
  22. for(j = 1; j <= n; j++)
  23. {
  24. if(vis[j]==0&&min>dis[j])
  25. {
  26. pos=j;
  27. min=dis[j];
  28. }
  29. }
  30. vis[pos]  = 1;
  31. ans += min;
  32. for(j = 1; j <= n; j++)
  33. {
  34. if(vis[j]==0&& dis[j]>map[pos][j])
  35. dis[j]=map[pos][j];
  36. }
  37. }
  38. printf("%d\n",ans);
  39. return ;
  40. }
  41. int main()
  42. {
  43. int a,b,c;
  44. int i,j;
  45. while(scanf("%d %d",&n,&m)!=EOF)
  46. {
  47. for(i=1; i<=n; i++)
  48. {
  49. for(j=1; j<=n; j++)
  50. {
  51. map[i][j]=N;
  52. map[j][i]=N;
  53. }
  54. map[i][i]=0;
  55. }
  56. for(i=1;i<=m;i++)
  57. {
  58. scanf("%d%d%d",&a,&b,&c);
  59. if(c<map[a][b])
  60. {
  61. map[a][b]=c;
  62. map[b][a]=c;
  63. }
  64. }
  65. prim();
  66. }
  67. return 0;
  68. }

最小生成树(kruskal模版 Prim模板)的更多相关文章

  1. 最小生成树——Kruskal与Prim算法

    最小生成树——Kruskal与Prim算法 序: 首先: 啥是最小生成树??? 咳咳... 如图: 在一个有n个点的无向连通图中,选取n-1条边使得这个图变成一棵树.这就叫“生成树”.(如下图) 每个 ...

  2. 关于最小生成树 Kruskal 和 Prim 的简述(图论)

    模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ...

  3. 最小生成树 kruskal算法&prim算法

    (先更新到这,后面有时间再补,嘤嘤嘤) 今天给大家简单的讲一下最小生成树的问题吧!(ps:本人目前还比较菜,所以最小生成树最后的结果只能输出最小的权值,不能打印最小生成树的路径) 本Tianc在刚学的 ...

  4. 最小生成树kruskal 知识点讲解+模板

    0.前言 因为本人太蒟了 我现在连NOIP的初赛都在胆战心惊 并且我甚至连最小生成树都没有学过 所以这一篇博客一定是最详细的QAQ 哈哈 请您认真看完如果有疏漏之处敬请留言指正 感谢! Thanks♪ ...

  5. 最小生成树算法(Prim,Kruskal)

    边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路.可以 ...

  6. 稀疏图(邻接链表),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)

    全部函数通过杭电 1142,1162,1198,1213等题目测试. #include<iostream> #include<vector> #include<queue ...

  7. 稠密图(邻接矩阵),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)

    全部函数通过杭电 1142,1162,1198,1213等题目测试. #include<iostream> #include<vector> #include<queue ...

  8. 最小生成树(Kruskal和Prim算法)

    关于图的几个概念定义:          关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vi与vj都有路 ...

  9. 1.1.2最小生成树(Kruskal和Prim算法)

    部分内容摘自 勿在浮沙筑高台 http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意 ...

随机推荐

  1. EPON ONU软件升级的若干优化方案

    1 说明 目前EPON ONU软件升级主要有IP方式(如SNMP/TR069)和TFTP+OAM两种.前者需占用大量IP地址,且配置ONU的IP地址需要手工操作,给业务开通和系统维护带来较大不便:后者 ...

  2. WP8.1学习系列(第二十章)——添加控件和处理事件

    先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...

  3. SharpGL学习笔记(八) 矩阵堆栈和变换的综合例子: 机器人

    我们先引入关于"矩阵堆栈"的官方说法: OpenGL的矩阵堆栈指的就是内存中专门用来存放矩阵数据的某块特殊区域.实际上,在创建.装入.相乘模型变换和投影变换矩阵时,都已用到堆栈操作 ...

  4. 邮件MIME格式分析

    http://www.cnblogs.com/crystalray/articles/3302427.html 邮件mime格式 参考: rfc4021,Registration of Mail an ...

  5. Cross-compilation using Clang

    Introduction This document will guide you in choosing the right Clang options for cross-compiling yo ...

  6. 异构GoldenGate 12c 单向复制配置

    1.分别在windows2008.linux平台部署oracle 11.2.0.4 2.分别在windows2008.linux平台部署gg. 2.1 windows平台: gg的安装目录位 C:\o ...

  7. MyBatis学习之SpringMvc和MyBatis整合

    1. 整合流程 Dao层: 1. SqlMapConfig.xml,空文件即可,需要文件头. 2. applicationContext-dao.xml. a) 数据库连接池 b) SqlSessio ...

  8. myisam与innodb索引比较

    MyISAM支持全文索引(FULLTEXT).压缩索引,InnoDB不支持 InnoDB支持事务,MyISAM不支持 MyISAM顺序储存数据,索引叶子节点保存对应数据行地址,辅助索引很主键索引相差无 ...

  9. 黄金票据(Golden Ticket)的原理与实践

    0.黄金票据是什么? 在与认证过程中,经过client与AS的通信会得到TGT,带着TGT想TGS请求,得到票据ticket,用这个ticket可以来访问应用服务器.如果这段有什么疑问,欢迎参考Ker ...

  10. Call removeView() on the child's parent first

    extends:http://stackoverflow.com/questions/6526874/call-removeview-on-the-childs-parent-first Except ...