最小生成树模板题

跑一次kruskal就可以了

  1. /* ***********************************************
  2. Author :Sun Yuefeng
  3. Created Time :2016/11/9 18:26:37
  4. File Name :tree.cpp
  5. ************************************************ */
  6.  
  7. #include<cstdio>
  8. #include<iostream>
  9. #include<algorithm>
  10. #include<cmath>
  11. #include<cstring>
  12. #include<string>
  13. #include<bitset>
  14. #include<map>
  15. #include<set>
  16. #include<stack>
  17. #include<vector>
  18. #include<queue>
  19. #include<list>
  20. #define M(a,b) memset(a,b,sizeof(a))
  21. using namespace std;
  22. typedef long long ll;
  23. const int inf=0x3f3f3f3f;
  24. const int maxn=;
  25. const int maxm=;
  26. const int mod=1e7+;
  27. int dx[]= {,,,-,,-,,-};
  28. int dy[]= {,-,,,-,,,-};
  29.  
  30. int f[maxn],tol,n,m;
  31.  
  32. struct _edge
  33. {
  34. int u,v,w;
  35. }edge[maxm];
  36.  
  37. bool cmp(_edge a,_edge b)
  38. {
  39. return a.w<b.w;
  40. }
  41.  
  42. void addedge(int u,int v,int w)
  43. {
  44. edge[tol].u=u;
  45. edge[tol].v=v;
  46. edge[tol].w=w;
  47. tol++;
  48. }
  49.  
  50. int _find(int x)
  51. {
  52. if(f[x]==-) return x;
  53. else return f[x]=_find(f[x]);
  54. }
  55.  
  56. int kruskal()
  57. {
  58. M(f,-);
  59. sort(edge,edge+tol,cmp);
  60. int cnt=,ans=;
  61. int u,v,w,f1,f2;
  62. for(int i=;i<tol;i++)
  63. {
  64. u=edge[i].u;
  65. v=edge[i].v;
  66. w=edge[i].w;
  67. f1=_find(u);
  68. f2=_find(v);
  69. if(f1!=f2)
  70. {
  71. ans+=w;
  72. f[f1]=f2;
  73. cnt++;
  74. }
  75. if(cnt==n-) break;
  76. }
  77. return ans;
  78. }
  79.  
  80. int main()
  81. {
  82. //freopen("in.txt","r",stdin);
  83. //freopen("out.txt","w",stdout);
  84. while(~scanf("%d%d",&n,&m)&&n)
  85. {
  86. tol=;
  87. for(int i=;i<m;i++)
  88. {
  89. int u,v,w;
  90. scanf("%d%d%d",&u,&v,&w);
  91. addedge(u,v,w);
  92. }
  93. printf("%d\n",kruskal());
  94. }
  95. return ;
  96. }

[kuangbin带你飞]专题六 最小生成树 POJ 1287 Networking的更多相关文章

  1. [kuangbin带你飞]专题六 最小生成树 POJ 2421 Constructing Roads

    给一个n个点的完全图 再给你m条道路已经修好 问你还需要修多长的路才能让所有村子互通 将给的m个点的路重新加权值为零的边到边集里 然后求最小生成树 #include<cstdio> #in ...

  2. [ An Ac a Day ^_^ ][kuangbin带你飞]专题六 最小生成树 POJ 2031 Building a Space Station

    最小生成树模板题 注意最后输出用%f (从C99开始%f已经不能用于输出double 即 输入用%lf 输出用%f) #include<cstdio> #include<algori ...

  3. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题六 最小生成树 POJ 1251 Jungle Roads

    题意: 有n个点 每个点上有一些道路 求最小生成树 解释下输入格式 A n v1 w1 v2 w2 A点上有n条边 A到v1权值是w1 A到v2权值是w2 思路: 字符串处理之后跑kruskal求最小 ...

  4. [kuangbin带你飞]专题六 最小生成树

    学习最小生成树已经有一段时间了 做一些比较简单的题还算得心应手..花了三天的时间做完了kuangbin的专题 写一个题解出来记录一下(虽然几乎都是模板题) 做完的感想:有很多地方都要注意 n == 1 ...

  5. [kuangbin带你飞]专题六 最小生成树 N - 畅通工程再续

    相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全 ...

  6. [ An Ac a Day ^_^ ][kuangbin带你飞]专题八 生成树 POJ 1679 The Unique MST

    求最小生成树是否唯一 求一遍最小生成树再求一遍次小生成树 看看值是否相等就可以 #include<cstdio> #include<iostream> #include< ...

  7. [kuangbin带你飞]专题1-23题目清单总结

    [kuangbin带你飞]专题1-23 专题一 简单搜索 POJ 1321 棋盘问题POJ 2251 Dungeon MasterPOJ 3278 Catch That CowPOJ 3279 Fli ...

  8. 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开

    [kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...

  9. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题八 生成树 UVA 10600 ACM Contest and Blackout 最小生成树+次小生成树

    题意就是求最小生成树和次小生成树 #include<cstdio> #include<iostream> #include<algorithm> #include& ...

随机推荐

  1. ios学习笔记第四天之官方文档总结

    start developing ios app today. 官方文档的体系结构为: 各层的主要框架图: objectice-c是动态语言 Objective-C 为 ANSI C 添加了下述语法和 ...

  2. C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析

    C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析 问题描述:大家没有遇到过这种情况使用自己编写的工具读取Excel2003文件中的数据,然后执行插入语句将数据批量导入到SQ ...

  3. XML中的五个保留字符及实体引用

    字符名称 字符 实体引用 和 & & 大于号 >  > 小于号 <  < 单引号 ‘ &apos; 双引号 “ " 在XML文档中,构成元素内 ...

  4. SQL Server 如何读写数据

    01. SQL Server 如何读写数据   一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事 ...

  5. C/C++用匿名数据结构实现时间和空间名利双收

    程序的时间和空间,往往是一对矛盾,比如计算CRC32的时候会用到余式表 DWORD *crcTable; // DWORD[256]; 余式表可以用某种规则计算生成,为缩短文章长度就不写出来了,总之要 ...

  6. 巧用百度Site App新组件为企业官网打造移动站

    一年前我曾经详细介绍过百度Site App,时隔一年的发展,Site App再一次发生了翻天覆地的变化:自定义程度更高.新增电话地图组件.增加流量统计.增加广告管家.生成APP客户端等功能,百度Sit ...

  7. Java 在本地文件中查找固定字符串

    适用范围:只适用于在文本文档中查找(如,txt.java.c等等,并不适用与doc.xls等等这些文件),可嵌套文件夹.但是对中文不支持. 例如:文件夹:F:/demo 子文件夹:F:/demo/er ...

  8. 神经机器翻译(NMT)相关资料整理

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 简介 自2013年提出了神经机器翻译系统之后,神经机器翻译系统 ...

  9. [ios2]iOS 使用subversion管理iOS源代码 【转】

    使用subversion管理iOS源代码 1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.c ...

  10. kafka服务安装-SuSE Linux Enterprise Server 11 SP3

    kafka是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率. 更多说明请自行了解,直接进入主题. kakfa 安装之前需要安装jdk,不做更多说明 一.下载kafka  进入下载页面:http: ...