最小生成树之kruskal
2016-06-27 19:00
204 查看
#include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; const int maxx = 102; typedef struct Road{ int x; int y; int cost; }Road; int pre[maxx],cnt,res; Road road[maxx*maxx+1]; void init(int n){ int i; for(i=1;i<=n;++i){ pre[i]=i; } } int root(int x) { return pre[x]==x?x:root(pre[x]); } int merge(int x,int y){ int fa = root(x); int fb = root(y); int ret = 0; if(fa!=fb){ --cnt; pre[fa] = fb; ret = 1; } return ret; } int cmp(struct Road a,struct Road b){ return a.cost<b.cost; } int main(){ int n,m,i,flg; while(scanf("%d %d",&n,&m) && n!=0){ init(m); cnt = m-1; res = 0; for(i=0;i<n;++i){ scanf("%d %d %d",&road[i].x,&road[i].y,&road[i].cost); } sort(road,road+n,cmp); for(i=0;i<n;++i){ flg = merge(road[i].x,road[i].y); if(flg==1){ res += road[i].cost; } } if(cnt!=0){ printf("?\n"); }else{ printf("%d\n",res); } } return 0; }
相关文章推荐
- 列表 view 的点击监听为何会混乱.
- 在为属性为match_parent的控件设置权重时出现的反比例情况解析
- 领域模型中的实体类分为四种类型:VO、DTO、DO、PO
- 关于sql中联接的问题
- vCenter 6.0 部署文档
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
- Spark中文指南(入门篇)-Spark编程模型(一)
- Qt之QPushButton
- 最小生成树之prime
- ThinkPHP的join方法
- Qt之QPushButton
- 结对编程总结
- .Net Core Linux centos7行—IOC模块
- 用R进行文件系统管理
- jQuery图片延迟加载插件jQuery.lazyload
- LeetCode 115、Distinct Subsequences
- jenkins2 pipeline介绍
- keepalived的搭建
- 关于GK盘
- APP开发协议文档模板