某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 

Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。 
当N为0时,输入结束,该用例不被处理。 
Output对每个测试用例,在1行里输出最小的公路总长度。 
Sample Input

  1. 3
  2. 1 2 1
  3. 1 3 2
  4. 2 3 4
  5. 4
  6. 1 2 1
  7. 1 3 4
  8. 1 4 1
  9. 2 3 3
  10. 2 4 2
  11. 3 4 5
  12. 0

Sample Output

  1. 3
  2. 5

题解:套模板

还是菜得一P啊

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. const int maxn=;
  5. int n,res,m;
  6. int par[maxn];
  7. struct node
  8. {
  9. int u,v,w;
  10. }es[maxn];
  11. int cmp(node x,node y)
  12. {
  13. return x.w<y.w;
  14. }
  15. void init()
  16. {
  17. for(int i=;i<maxn;i++) par[i]=i;
  18. }
  19. int Find(int x)
  20. {
  21. if(par[x]==x) return x;
  22. else return Find(par[x]);
  23. }
  24. int deal()
  25. {
  26. init();
  27. sort(es,es+m,cmp);
  28. res=;
  29. for(int i=;i<m;i++){
  30. int u=es[i].u,v=es[i].v,w=es[i].w;
  31. if(Find(u)==Find(v)) continue;
  32. par[Find(u)]=Find(v);
  33. res+=w;
  34. }
  35. return res;
  36. }
  37. int main()
  38. {
  39. while(cin>>n&&n){
  40. m=n*(n-)/;
  41. for(int i=;i<m;i++){
  42. cin>>es[i].u>>es[i].v>>es[i].w;
  43. }
  44. cout<<deal()<<endl;
  45. }
  46. return ;
  47. }

。。。。。。

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <vector>
  6. #include <cstdlib>
  7. #include <iomanip>
  8. #include <cmath>
  9. #include <ctime>
  10. #include <map>
  11. #include <set>
  12. #include <queue>
  13. using namespace std;
  14. #define lowbit(x) (x&(-x))
  15. #define max(x,y) (x>y?x:y)
  16. #define min(x,y) (x<y?x:y)
  17. #define MAX 100000000000000000
  18. #define MOD 1000000007
  19. #define pi acos(-1.0)
  20. #define ei exp(1)
  21. #define PI 3.141592653589793238462
  22. #define INF 0x3f3f3f3f3f
  23. #define mem(a) (memset(a,0,sizeof(a)))
  24. typedef long long ll;
  25. ll gcd(ll a,ll b){
  26. return b?gcd(b,a%b):a;
  27. }
  28. bool cmp(int x,int y)
  29. {
  30. return x>y;
  31. }
  32. const int N=;
  33. const int mod=1e9+;
  34. int f[N];
  35. struct edge
  36. {
  37. int u,v,w;
  38. }a[N];
  39. void init()
  40. {
  41. for(int i=;i<=N;i++)
  42. f[i]=i;
  43. }
  44. int find1(int x)
  45. {
  46. if(x!=f[x])
  47. f[x]=find1(f[x]);
  48. return f[x];
  49. }
  50. bool cmp1(edge a,edge b)
  51. {
  52. return a.w<b.w;
  53. }
  54. int main()
  55. {
  56. std::ios::sync_with_stdio(false);
  57. int n,m;
  58. while(scanf("%d",&n)&&n){
  59. init();
  60. m=n*(n-)/;
  61. for(int i=;i<m;i++)
  62. scanf("%d %d %d",&a[i].u,&a[i].v,&a[i].w);
  63. sort(a,a+m,cmp1);
  64. int s=;
  65. for(int i=;i<m;i++){
  66. int u=a[i].u,v=a[i].v,w=a[i].w;
  67. if(find1(u)==find1(v)) continue;
  68. f[find1(u)]=find1(v);
  69. s+=w;
  70. }
  71. printf("%d\n",s);
  72. }
  73. return ;
  74. }

HDU 1233 还是畅通工程 (最小生成树 )的更多相关文章

  1. hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)

    还是畅通工程                                                                            Time Limit: 4000/2 ...

  2. HDU 1233 还是畅通工程 (最小生成树)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. HDU 1233.还是畅通工程-最小生成树(Prime)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. (step6.1.5)hdu 1233(还是畅通工程——最小生成树)

    题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin.end.weight,分别表示路的起始村庄,结束村庄和村庄之间的距离. 求索要修的路的最短距离 解 ...

  5. HDU 1233 还是畅通工程(最小生成树,prim)

    题意:中文题目 思路:prim实现,因为有n*(n-1)/2条边,已经是饱和的边了,prim比较合适. (1)将点1置为浏览过,点1可以到达其他每个点,所以用low[i]数组记录下目前到达i点的最小长 ...

  6. HDU.1233 还是畅通工程(Prim)

    HDU.1233 还是畅通工程(Prim) 题意分析 首先给出n,代表村庄的个数 然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离, 要求求出最小生成树的权值之和. 注意村庄的编号从 ...

  7. hdu 1233 还是畅通工程 (最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    ...

  8. HDU 1233 还是畅通工程(Kruskal算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)   ...

  9. hdu 1233 还是畅通工程 并查集or最小生成树

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路 ...

  10. hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)

    还是畅通工程 Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

随机推荐

  1. Redis和Memcache的区别是什么

    Redis和Memcache都是内存数据库,但它们之间还是有区别的,跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构,如string,list,dict,set,z ...

  2. Dockerfile语法解析

    Dockfile介绍 从上到下依次执行 每次执行一条指令就创建一个镜像层 第一条指令必须是FROM    表示需要构建的镜像是由哪个镜像为基础镜像   后续的指令运行于此基准镜像所提供的运行环境 可以 ...

  3. PXE安装操作系统

    TFTP服务 用PXE安装操作系统依赖于DHCP服务和TFTP服务 网卡一般都内置的TFTP客户端的程序 systemctl enable tftp     systemctl enable  dhc ...

  4. node学习系列 搭建express

    搭建express express官网API http://expressjs.com/zh-cn/ 1.在文件夹下新建一个packages.json文件 内容为: {} 然后执行 yarn add ...

  5. git 查看某个文件的修改记录

    有几种方式, (1)如果是在linux环境下,比如centos,ubuntu之类的,建议安装tig命令 炒鸡好用,tig后面可以跟文件或者文件夹,比如: (1.1)tig  dir_name (1.2 ...

  6. git 不区分文件大小写的处理

  7. gem安装出错了

    1.首先是SSL出错. SSL 证书错误 正常情况下,你是不会遇到 SSL 证书错误的,除非你的 Ruby 安装方式不正确. 如果遇到 SSL 证书问题,你又无法解决,请修改 ~/.gemrc 文件, ...

  8. Python Shell 中敲击方向键显示「^[[C^[[D],问题解决

    碰到问题后,在网上搜索. 有帖子建议:yum install -y ncurses-devel,我这个2.7.13版本的在Linux下不行.估计是解决python3.x的方案. 尝试网上建议的,装了 ...

  9. asp.net拦截器

    一 拦截器又称过滤器. asp.net mvc本身是自带3种拦截器:Action拦截器.Result拦截器.Exception拦截器. 应用中常见的拦截器有日志拦截器(Action拦截器)和异常处理拦 ...

  10. mx:Panel (面板容器) mx:Button (按钮) 默认大小

    1.默认组件大小 <mx:Panel title="默认的面板容器大小和按钮控件大小"> <!-- 使用控件大小默认值 --> <mx:Button ...