最小权值和
来源:互联网 发布:versions for mac 编辑:程序博客网 时间:2024/05/04 23:26
题意:第一行给出m,n。接下来m行每行三个数u v s表示从u到v的权值。算出把n个数连起来权值最小的值‘
思路:krustal算法,照着模板就行,注意讨论根是否走过,总之不太熟。
感悟:真是一点小错误也不敢有啊。
AC代码:
#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;int bin[10010];struct p{ int s; int e; int v;}q[100010];bool flag[10010];bool cmp(p a,p b){ return a.v>b.v;}int find(int x){ if(x!=bin[x]) bin[x]=find(bin[x]); return bin[x];}int main(){ int n,m,i,x,y; while(scanf("%d%d",&n,&m),n|m) { for(i=0;i<m;i++) scanf("%d%d%d",&q[i].s,&q[i].e,&q[i].v); sort(q,q+m,cmp); int res=0; for(i=0;i<n;i++) bin[i]=i,flag[i]=false; for(i=0;i<m;i++) { x=find(q[i].s); y=find(q[i].e); if(x!=y){ if(!flag[x]&&!flag[y]){ bin[x]=y; res+=q[i].v; } else if(!flag[x]||!flag[y]){ bin[x]=y; res+=q[i].v; flag[x]=flag[y]=true; } } else{ if(!flag[x]){ flag[x]=true; res+=q[i].v; } } } printf("%d\n",res); } return 0;}
1 0
- 最小权值和
- hdu3488 Tour (KM最小权值和)
- 最小边权和
- [JZOJ5088]最小边权和
- hdu 1853 Cyclic Tour(最小权值和)
- hdu1533 Going Home (KM算法最小权值和)
- hdu2813 One fihgt one (KM最小权值和)
- poj 3686 The Windy's(最小权值和)
- HUD3488 Tour(二分图的最小权值和)
- (prim算法题型一)求最小生成树的权值和、路径、边值的最小和最大值。
- 最小和
- Prim最小生成树(求,生成树中权值的和,最大权值,最小权值) 参考poj1258 2485
- Kruskal 最小生成树(输出最小生成树的路径,权值的和) 参考poj 1258
- UVA - 1395 Slim Span(最小生成树最大边权和最小边权之差最小)
- uva 1411 Ants (权值和最小的完美匹配---KM算法)
- 【算法】最小生成树——所有点成树有最小总权和
- 最小正序列和
- 最小距离和
- Intent可传递的数据类型
- 图书管理系统
- ajax入门学习
- YourUninstaller注册码
- 文件上传及导入数据库
- 最小权值和
- Execution of Paladin(山东省第七届acm j题)
- map如何按value来排序------用带pair的vector吧
- 一个新的开始
- Space Elevator poj 2392(多重背包)
- 【OpenGL 学习笔记】Nehe OpenGL + Visual Studio 2015 环境配置+ vs编译基础
- 宿主机(centos7)虚拟化软件 KVM 安装方法
- Mybatis 学习笔记
- 23种设计模式