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

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. Github上Laravel开源排行榜Star数前30名

    Github上Laravel开源排行榜前30名,罗列所有 Laravel 开源扩展包,含 Github Star 数量,下载数量和项目简介.默认排序是按Star数量从多到少来排 1.cachethq/ ...

  2. 微信小程序可以转发给微信好友了

    微信小程序又放大招了:小程序页面可以放置转发按钮,分享更流畅.同时开放了微信运动步数.背景音乐播放等更多基础能力.小程序可以在自己的页面上放置转发按钮,用户点击后,即可将喜欢的内容分享给好友或群聊,体 ...

  3. 【剑指offer】部分思路整理

    题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去 ...

  4. Win7各版本功能对比

  5. [django]阅读笔记

    https://dwz.cn/FUcnVGi8 新建目录 django-admin.exe startproject myblog django-admin.exe startproject mybl ...

  6. 用lua扩展你的Nginx(整理)-----openresty

    用lua扩展你的Nginx(整理) 首先得声明.这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了.按风格应该是属于章亦春的文章. 整理花了不少时间,所以就暂写成原创吧. 一. 概述 Ng ...

  7. 【LeetCode每天一题】Longest Common Prefix(最长前缀)

    Write a function to find the longest common prefix string amongst an array of strings. If there is n ...

  8. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  9. [LeetCode] 860. Lemonade Change_Easy tag: Greedy

    At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...

  10. Navicat 连接Oracle11g时出现ORA-12514:TNS:no listener

    前两天做系统时用navicat连接Oracle数据库还好好的,今天一连突然就开始报ORA-12514:TNS:no listener.然后看网上大部分教程需要改listener.ora文件中的 将HO ...