uva 1395 Slim Span (最小生成树||(最大边减最小边尽量小))
来源:互联网 发布:无人机数据算法 编辑:程序博客网 时间:2024/04/29 12:04
题意:这道题重新定义了最小生成树的含义是生成树中最小的边和最大的边的差值。然后给你一个无向带权图,让你输出最小生成树的值。若没有输出-1。
思路:很简单稍微想一下就可以知道,我们只要枚举生成树中最小的那条边然后在这个基础上求最小生成树,这样每次更新最小值,最终就能得到答案。
小贪心,先把边排序,一开始我是暴力的,固定一下边的上界跟下界,O(n*n) ,有10000条边,会超时,要优化, 想想能不能固定一条边, 其实是可以的,
按着最小生成树的思路, 枚举最小的边,然后在这个基础上做一下最小生成树!!! 那么最长边一定对应最短边。。。。 好题吧
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N = 111;const int inf = 0x3f3f3f3f;int fa[N];int find(int x){int r=x;while(fa[r]!=r) r=fa[r];int i=x,j;while(i!=r) {j=fa[i];fa[i]=r;i=j;}return r;}void init(int n){for(int i=1;i<=n;i++) fa[i]=i;}struct node{int u,v,w;}a[N*N];bool cmp(node t1,node t2){if(t1.w<t2.w) return true;return false;}int main(){int n,m,i,j,ans,k,cnt;while(scanf("%d%d",&n,&m)!=EOF) {if(n==0 && m==0) break;for(i=1;i<=m;i++) {scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);}sort(a+1,a+1+m,cmp);int l,r,fx,fy;ans=inf;for(i=1;i<=m;i++) {cnt=1;init(n);fx=find(a[i].u),fy=find(a[i].v);if(fx!=fy) fa[fy]=fx,cnt++;for(k=i;k<=m;k++) {fx=find(a[k].u),fy=find(a[k].v);if(fx!=fy) {fa[fy]=fx,cnt++;}if(cnt==n) {ans=min(ans,a[k].w-a[i].w);}}}if(ans==inf) ans=-1;printf("%d\n",ans);}return 0;}
0 0
- uva 1395 Slim Span (最小生成树||(最大边减最小边尽量小))
- UVA - 1395 Slim Span(最小生成树最大边权和最小边权之差最小)
- UVA 1395Slim Span 最小生成树
- uva 1395 Slim Span 最小生成树
- uva 1395 Slim Span[最小生成树]
- uva 1395 - Slim Span(最小瓶颈生成树)
- (beginer) 最小生成树 UVA 1395 Slim Span
- UVa 1395 Slim Span (最小生成树)
- UVA 1395 Slim Span(最小生成树)
- uva 1395 - Slim Span poj 3522 Slim Span(最小生成树算法)
- 1395 - Slim Span (最小生成树)
- [枚举最小瓶颈生成树]UVa-1395 - Slim Span(kruskal)
- uva 1359 poj 3522 Slim Span(最小生成树)
- Slim Span 求一颗生成树 使得最大边与最小边的差值最小
- POJ 3522 Slim Span 求一棵生成树,让最大边和最小边只差最小
- 例题11-2 UVA - 1395 Slim Span 苗条的生成树(Kruscal最小生成树)
- uva-1395-Slim Span-最小生成树,并查集,Kruskal
- Poj 352 UVA oj 1395 Slim Span 最小生成树应用
- 216. Combination Sum III**
- 小程序图片上传
- jQuery给input绑定回车事件
- CSS3之复杂选择器、内容生产、多列、CSS Hack
- hosts文件被删除可以怎么办!
- uva 1395 Slim Span (最小生成树||(最大边减最小边尽量小))
- 06-Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp)
- 【jzoj3848】【大水题】【数位动态规划】
- Linux增加分区大小
- CodeForces - 598D Igor In the Museum
- 机器学习:代价函数cost function
- 技术人
- Swift3.0-类(class)
- Linux文件搜索find命令