用的是prim算法。

我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点)。
但其实时间也差不多,和遍历所有的点的方法都是16ms。。。

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <string>
  6. #include <queue>
  7. using namespace std;
  8.  
  9. const int INF=0x3f3f3f3f;
  10. int n,cost;
  11. int ans;
  12. int w[][];
  13. int dis[]; //生成树外的点与生成树相连的最短边长
  14. int pre[]; //pre[v]为v的前驱节点,用来输出进入最小生成树的边。该题用不到
  15. int vis[]; //标记点是否在生成树中
  16. vector<int> son[];
  17.  
  18. void init() {
  19. memset(pre,,sizeof(pre));
  20. memset(dis,INF,sizeof(dis));
  21. memset(vis,,sizeof(vis));
  22. }
  23.  
  24. int solve() {
  25. vector<int> node;
  26. int s=,counts=,ans=,tmp,k;
  27. dis[s]=;
  28. pre[s]=s;
  29.  
  30. node.push_back(s);
  31. while() {
  32. tmp=INF;
  33.  
  34. for(int i=; i<node.size(); i++) {
  35. int v=node[i];
  36. if(!vis[v]&& dis[v]<tmp) {
  37. tmp=dis[v];
  38. k=v; //k即为在没有进入最小生成树的点中到树的距离(dis[k])最小的点。
  39. }
  40. }
  41. /*
  42. //直接遍历所有的点
  43. for(int i=1;i<=n;i++){
  44. if(!vis[i]){
  45. if(dis[i]<tmp){
  46. tmp=dis[i];
  47. k=i;
  48. }
  49. }
  50. }
  51. */
  52. if(tmp==INF)
  53. break;
  54. ans+=tmp;
  55. vis[k]=;
  56.  
  57. for(int i=; i<son[k].size(); i++) {
  58. int v=son[k][i];
  59. if(!vis[v] && w[k][v]<dis[v]) {
  60. dis[v]=w[k][v];
  61. pre[v]=k;
  62. node.push_back(v);
  63. }
  64. }
  65. }
  66. return ans;
  67.  
  68. }
  69. int main() {
  70. while(scanf("%d",&n)!=EOF) {
  71.  
  72. for(int i=; i<; i++) {
  73. son[i].clear();
  74. }
  75. for(int i=; i<=n; i++) {
  76. for(int j=; j<=i; j++)
  77. scanf("%d",&cost);
  78. for(int j=i+; j<=n; j++) {
  79. scanf("%d",&cost);
  80. w[i][j]=w[j][i]=cost;
  81. son[i].push_back(j);
  82. son[j].push_back(i);
  83. }
  84. }
  85. ans=;
  86. init();
  87. ans=solve();
  88.  
  89. printf("%d\n",ans);
  90. }
  91. return ;
  92. }

POJ 1258 Agri-Net(最小生成树,模板题)的更多相关文章

  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 Prim最小生成树模板题

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

  3. POJ 1287 Networking【kruskal模板题】

    传送门:http://poj.org/problem?id=1287 题意:给出n个点 m条边 ,求最小生成树的权 思路:最小生树的模板题,直接跑一遍kruskal即可 代码: #include< ...

  4. POJ 1502 MPI Maelstrom(模板题——Floyd算法)

    题目: BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distri ...

  5. POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】

    <题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...

  6. POJ 3264 Balanced Lineup(模板题)【RMQ】

    <题目链接> 题目大意: 给定一段序列,进行q次询问,输出每次询问区间的最大值与最小值之差. 解题分析: RMQ模板题,用ST表求解,ST表用了倍增的原理. #include <cs ...

  7. POJ 1330 Nearest Common Ancestors (模板题)【LCA】

    <题目链接> 题目大意: 给出一棵树,问任意两个点的最近公共祖先的编号. 解题分析:LCA模板题,下面用的是树上倍增求解. #include <iostream> #inclu ...

  8. POJ:Dungeon Master(三维bfs模板题)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16748   Accepted: 6522 D ...

  9. O - 听说下面都是裸题 (最小生成树模板题)

    Economic times these days are tough, even in Byteland. To reduce the operating costs, the government ...

  10. POJ 3068 运送危险化学品 最小费用流 模板题

    "Shortest" pair of paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1215 ...

随机推荐

  1. 小米pad MI PAD 开发者选项、USB调试开启方式

    设置->关于平板->在MIUI版本一行连续点击7次. 之后就出现了开发者选项.可以开启USB调试等. 你能想到吗……??

  2. void指针

    指针有两个属性:指向变量/对象的地址 和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找 ...

  3. 简单解析依赖注入(控制反转)在Spring中的应用

    IoC——Inversion of Control  控制反转DI——Dependency Injection   依赖注入 大家都知道,依赖注入是Spring中非常重要的一种设计模式.可能很多初学者 ...

  4. JS判断客户端是手机还是PC

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  5. [大牛翻译系列]Hadoop(11)MapReduce 性能调优:诊断一般性能瓶颈

    6.2.4 任务一般性能问题 这部分将介绍那些对map和reduce任务都有影响的性能问题. 技术37 作业竞争和调度器限制 即便map任务和reduce任务都进行了调优,但整个作业仍然会因为环境原因 ...

  6. python: 生成guid

    其实经常需要生成一个guid,在各种场合使用...也简单写个小脚本实现吧. 实现下来发现速度比较慢... import uuid import sys def show_ver(): print 'g ...

  7. Microsoft server software support for Microsoft Azure virtual machines

    http://support.microsoft.com/kb/2721672/en-us  Article ID: 2721672 - Last Review: November 22, 2014 ...

  8. postgreSQL数据库(索引、视图)

    索引的含义与特点 索引是一个单独的.存储在磁盘上的数据库结构,它们包含对数据所有记录的引用指针,postgresql列类型都可以被索引,对相关列索引是提高查询操作效率的最佳途径.例如,查询select ...

  9. Hadoop2安装

    http://wenku.baidu.com/view/fe1b2f22de80d4d8d15a4f6e.html http://wenku.baidu.com/view/e4607031581b6b ...

  10. 【F#】核心数据多线程处理的首选

    http://www.cnblogs.com/zilin-xiao/archive/2011/08/26/2155124.html