uva 1396 Slim Span
来源:互联网 发布:程序员怎么赚钱 编辑:程序博客网 时间:2024/06/05 20:04
Kruskal 算法
注意数组不要越界,尽量开大点,其他没什么注意,这种算法的水题
#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>//#define T///////////////using namespace std;const int M = 220;int f[M];struct edge{ int x; int y; int u;};edge e[10000];void s_union(int a, int b);bool cmp(edge a,edge b);int f_find(int a);int counter;int ans;int n,m;void inital(){ for(int i = 0; i <= 200; i ++) f[i] = i; counter = 1;}bool cmp(edge a,edge b){ return a.u < b.u;}int f_find(int a){ if(a != f[a]) f[a] = f_find(f[a]); return f[a];}void s_union(int a, int b){ if(a > b) f[b] = a; else f[a] = b;}int main(){int l,i,j,r; while(~scanf("%d %d",&n,&m) && (n||m)) { ans = 0x3f3f3f3f; for( i = 0; i < m; i ++) scanf("%d %d %d",&e[i].x,&e[i].y,&e[i].u); sort(e,e+m,cmp); for(j = 0; j < m; j++) { inital(); for( i = j; i < m; i++) { l = f_find(e[i].x); r = f_find(e[i].y); if(l != r) { s_union(l,r); counter++; // printf("counter ----- %d\n",counter); } if(counter == n) { ans = min(ans,e[i].u - e[j].u); break; } } } if(ans == 0x3f3f3f3f) printf("%d\n",-1); else printf("%d\n",ans); } return 0;}
0 0
- uva 1396 Slim Span
- UVA 1395 Slim Span
- 【UVA】1395-Slim Span
- UVA 1395 - Slim Span
- UVA - 1395 Slim Span
- UVa 1395 Slim Span
- UVA 1395 Slim Span
- UVa 1395 slim span
- UVA 1395 Slim Span
- UVA 1395 Slim Span
- UVA 1395Slim Span
- Slim Span UVA
- uva 1395Slim Span
- Slim Span UVA
- uva 1395 Slim Span
- Uva 1395 Slim Span
- UVA 1395 Slim Span(枚举)
- uva 1395 slim span MST
- Selenium2 Python 自动化测试实战学习笔记(五)
- LinkedList
- Android API Guides---Resource Types
- scons tips
- 路由器tomato固件上搭建svn
- uva 1396 Slim Span
- Linux系统的磁盘内存CPU网络测试工具
- 文本分析基础知识
- maven配置过程中出现Unsupported major.minor version
- Oracle-35-隐式游标&显式游标&【Oracle自学总结】
- JVM调优简述
- 数据结构算法——快速排序
- 并行编程中的“锁”难题
- AngularJS 世界------Angularjs简介