个人心得:日了狗,WR了俩个小时才发现是少了个vector清理,我也是醉了,不过后面还是对这个有了更好得了解,一是我得算法,而是学长改进

后的算法,改进后得算法还要判断所有村庄是否在连在一起,其实我觉得实必要性不大。

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。

Input
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N 
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
Output
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
Sample Input
3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
Sample Output
3 ?
Source
浙大计算机研究生复试上机考试-2007年
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<algorithm>
 6 using namespace std;
 7 const long long maxa=99999999;
 8 int n,m;
 9 struct village
10 {
11     int v;
12     int e;
13     int w;
14     village(int x,int y,int z){
15             v=x,e=y,w=z;
16     }
17     village(){}
18     bool operator <(const village &V)const
19     {
20         return w<V.w;
21
22     }
23
24 };
25 vector<village> V;
26 int book[105];
27 void init()
28 {
29     for(int i=1;i<=m;i++)
30         book[i]=i;
31
32 }
33 int getx(int x)
34 {
35     if(book[x]!=x)
36         book[x]=getx(book[x]);
37     return book[x];
38 }
39 void mergexy(int x,int y)
40 {
41      book[y]=x;
42 }
43 int main()
44 {
45     while(cin>>n>>m)
46     {
47         V.clear();
48         if(n==0) break;
49         init();
50         int t=n;
51         while(t--)
52         {
53             int x,y,z;
54             scanf("%d%d%d",&x,&y,&z);
55             village a(x,y,z);
56             V.push_back(a);
57         }
58         sort(V.begin(),V.end());
59         int number=0;
60         long long sum=0;
61         for(int i=0;i<V.size();i++)
62         {
63             if(getx(V[i].v)!=getx(V[i].e)){
64                 mergexy(getx(V[i].v),getx(V[i].e));
65                 number++;
66                 sum+=V[i].w;
67
68         }
69         if(number==m-1)  break;
70     }
71     if(number==m-1) cout<<sum<<endl;
72     else cout<<"?"<<endl;
73
74
75 }
76 return 0;
77 }

转载于:https://www.cnblogs.com/blvt/p/7300914.html

畅通工程(kruskal算法)相关推荐

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

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊  就是注意一点 输入边的信息时,角标 ...

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

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

  3. HDU1875 畅通工程再续【Kruskal算法+并查集】

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU1233 还是畅通工程【Kruskal算法+并查集】

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

  5. HDU1863 畅通工程【Kruskal算法+并查集】

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...

    赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下.(都是greedy) Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束.判断加入(v,w)是否 ...

  7. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  8. Kruskal HDOJ 1233 还是畅通工程

    题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...

  9. (kruskal)还是畅通工程

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

  10. 还是畅通工程(prim和kruskal)

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

最新文章

  1. 【原生js】js动态添加dom,如何绑定事件
  2. 【渝粤教育】国家开放大学2018年春季 0688-21T老年精神障碍护理 参考试题
  3. Windows主机安全加固
  4. xcode -饼状进度条
  5. reportviewer动态数据源
  6. Laravel核心解读 -- Request
  7. C# 中的DevExpress CheckedListBoxControl控件
  8. php自定义函数记录一
  9. 面试:用 Java 实现一个 Singleton 模式
  10. 简单的spring mvc实例
  11. 上网时间监控软件_网管软件有哪一些?哪家好?
  12. 命令查询职责分离模式 CQRS Command Query Responsibility Segregation
  13. DevC++的一些使用技巧
  14. Kaggle——TMDB电影票房预测
  15. 2.遥感传感器和遥感数据
  16. gie拉取Can‘t update master has no tracked branch
  17. 洛谷 桶哥的问题——吃桶——题解
  18. NPOI导出Word并插入表格和图片
  19. 建造者模式------C++实现游戏人物的设定
  20. java输入十个,键盘输入十个数,输出最大数

热门文章

  1. ubuntu16.04中将自己的ubuntu做成镜像
  2. java LinkedList(链表)
  3. Web API 路由 [二] Attribute Routing
  4. 【2017-04-16】抽象类、接口、构造函数、重载和重写的区别、静态成员和方法
  5. 【转】windows下GSL的配置
  6. Log Explorer 恢复误删除、更新数据
  7. webpack笔记(9)静态资源集中输出
  8. 高级软件工程第一次团队作业
  9. python-下拉框处理
  10. 2016 ACM/ICPC 沈阳站 小结