uva1395 Kruskal算法求最小生成树
来源:互联网 发布:足球基本面分析软件 编辑:程序博客网 时间:2024/04/29 01:27
注意并查集的实现方法。
#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<string>#include<map>#include<set>#include<algorithm>#include<vector>#include<stack>#include<sstream>#define ll long longusing namespace std;const int M_NUM_MAX = 100+5;const int M_INT_MAX = 0x7fffffff;const double M_DBL_MAX = 1.7976931348623158e+308;const double M_DBL_MIN = 2.2250738585072014e-308;/*********************************************************************/struct edge{ int x,y; int d; bool operator < (const edge& dst) const{return d<dst.d;}}theEdge[M_NUM_MAX*(M_NUM_MAX-1)/2];int p[M_NUM_MAX];/*********************************************************************/int min (int& a, int& b){return a<b?a:b;}int findParent (int i){return p[i]==i?i:p[i]=findParent(p[i]);}//查找i的最原始祖先,并将其他祖先的父亲置为最原始祖先/*********************************************************************/int main(){ //freopen ("in.txt","r",stdin); int n,m; while (scanf ("%d%d",&n,&m) && (n!=0||m!=0) ) {for (int i = 0; i < m; i++) scanf ("%d %d %d",&theEdge[i].x, &theEdge[i].y, &theEdge[i].d); sort (theEdge,theEdge+m);int minNum=M_INT_MAX;for (int i=0;i<m;i++){ for (int j=0;j<=n;j++) p[j]=j; int cnt=0,r; bool success=false; for (int j=i;j<m&&!success;j++){int x=findParent(theEdge[j].x),y=findParent(theEdge[j].y);if (x!=y){//如果边j的两个端点不在一个并查集,说明该点不在一个连通图 p[x]=y;//加入连通图 cnt++; r=j;}if (cnt==n-1) success=true; } if (success)minNum=min(minNum,theEdge[r].d-theEdge[i].d);}if (minNum==M_INT_MAX) printf ("-1\n");else printf ("%d\n",minNum); } return 0;}
0 0
- uva1395 Kruskal算法求最小生成树
- UVA1395-Slim Span(最小生成树Kruskal、并查集)
- Uva1395 最小生成树
- Kruskal算法求最小生成树
- Kruskal 算法 求最小生成树
- 24.kruskal算法 求 最小生成树
- Kruskal算法(求最小生成树)
- Kruskal算法求最小生成树
- Kruskal 算法求最小生成树
- hdu1102 kruskal算法求最小生成树
- Kruskal算法求最小生成树
- Kruskal算法求MST(最小生成树)
- 求最小生成树Kruskal算法
- 水题 kruskal算法求最小生成树
- Kruskal算法求最小生成树
- 求最小生成树的Kruskal算法
- kruskal算法求最小生成树
- Kruskal算法求最小生成树 (最小堆优化)
- Java学习之路0724(十)(JSon解析、Date类与Calendar类、集合类、泛型、枚举)
- top命令的Load average 含义及性能参考基值
- poj 1351 DFS
- iOS如何测试单例?
- HDU 2005 第几天?
- uva1395 Kruskal算法求最小生成树
- STL中栈、队列和优先队列的使用
- Mac OSX 除了cd以外的命令都报 command not found
- Css
- iOS单元测试编码规范
- “计蒜客”-挑战难题-13:整数转换成罗马数字
- linux shell查找文件的行数
- HTTP、SIP都是基于文本的协议,他们和基于二进制的协议有什么区别?!
- mycncart不同地区不同固定运费