畅通工程

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 47870    Accepted Submission(s): 21342

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


注意一下判断有点没有联通的方法:

可以用循环(双重循环)遍历每一个点的的same函数是否为true

或者用一个循环放在K函数里面看根节点是否大于1,大于1说明还有没有联通的点(因为最小生成树全联通的话只有一个公共的根节点)

刚开始自己想错就单纯地判断V和m-1的不等关系,但实际上比如就算输入很多路(假设有3个村庄),但是输入的总是第一个和第二个村庄的路,肯定是不行的。


#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn=20005;
int par[maxn];
int height[maxn];struct edge
{int u;int v;int cost;
}es[maxn];bool comp(const edge& e1,const edge&e2)
{return e1.cost<e2.cost;
}void init(int n)
{for(int i=1;i<=n;i++){par[i]=i;height[i]=0;}
}
int find(int x)
{if(par[x]==x){return x;}else{return par[x]=find(par[x]);}
}
void unite(int x,int y)
{x=find(x);y=find(y);if(x==y) return;if(height[x]<height[y]){par[x]=y;}else{par[y]=x;if(height[x]==height[y])height[x]++;}
}
bool same(int x,int y)
{return find(x)==find(y);
}
int V,E;
int kruslkal()
{sort(es+1,es+E+1, comp);//init(V);/// int res=0;for(int i=1;i<=E;i++){edge e=es[i];if(!same(e.u,e.v)){unite(e.u,e.v);res+= e.cost;}  }int a=0;for(int i=1;i<=V;i++){if(par[i]==i)a++;}if(a>1)return -1;elsereturn res;
}
int main(void)
{while(scanf("%d",&E)!=EOF){if(E==0) break;scanf("%d", &V);memset(par,0,sizeof(par));memset(height,0,sizeof(height));memset(es,0,sizeof(es));init(V);for(int i=1;i<=E;i++){scanf("%d%d%d", &es[i].u, &es[i].v, &es[i].cost); }  int ans=kruslkal();if(ans==-1)printf("?\n");else printf("%d\n",ans);}
return 0;
}

畅通工程1863(并查集)(WA的思考)相关推荐

  1. 【HDU - 1863】 畅通工程(并查集+最小生成树)

    题干: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的 ...

  2. HDOJ 畅通工程 1232(并查集入门)

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

  3. HDU1232 畅通工程【并查集】

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

  4. hdu1232 畅通工程 (并查集)(浙师大OJ1307)

    题目:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互 ...

  5. hdu1232畅通工程(并查集)

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  6. Hdu1232 畅通工程 【并查集】

    http://acm.hdu.edu.cn/showproblem.php?pid=1232 题目大意:有几个集合,问最少需要连几根线才能把这些集合并为一个集合. N个集合的话就需要N-1条路就行了, ...

  7. [ACM] hdu 1232 畅通工程(并查集)

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  8. hdu 1232 畅通工程 最小生成树 并查集

    1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...

  9. 畅通工程(并查集 C++)

    [题目描述] 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1232 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省 ...

  10. BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]

    题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...

最新文章

  1. 超大型数据中心阻碍5G的正常发挥?
  2. OpenGL material light材质灯光的实例
  3. 区块链在供应链领域的应用
  4. JavaSE各阶段练习题----多线程
  5. The type sun.management.ManagementFactory is not visible
  6. JAVA-入门(内含jdk配置)
  7. Leetcode 23.移除元素
  8. 谢华亮 php,谢华亮: PHP4和PHP5性能测试和对比
  9. python获取mysql数据为excel中的sheet_python 从excel、csv、mysql、txt获取数据源
  10. redis集群linux安装教程,linux下redis集群的原生安装方式部署
  11. Linux根文件组织架构
  12. notepad快捷键大全
  13. 【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份...
  14. 送给测试行业年轻人们的一些建议
  15. Java全网最全面试题(2022年VIP典藏版)
  16. win 10 下cmd命令无法使用ssh命令
  17. excel在线_图片转Excel表格在线工具,分享几款不错的工具
  18. electron-vue中调用系统屏幕键盘(linux与windows)
  19. Total Commander 文件管理
  20. 融合多头注意力机制的网络恶意流量检测

热门文章

  1. R语言入门——画密度曲线
  2. Error 0x80240017: Failed to execute MSU package.
  3. Jetson Nano开发实录
  4. 【源码】基于PMSG的风力发电机组仿真与建模
  5. 宝讯网捷:拼多多商家如何做好运营?
  6. win10如何截屏_win10使用技巧分享!
  7. 手机里android文件夹是什么文件夹,安卓手机里的.androidlmage test是什么文件夹?...
  8. 5 开源Math.NET基础数学类库使用 C#解析Delimited Formats数据格式
  9. 静态函数和非静态函数的区别(静态方法和非静态方法)
  10. 毕业四年后的程序员继续租房子