hdu 5624 KK's Reconstruction(最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5624
解题思路:
题目中要求每个点都连通,且保证最大边与最小边的差值最小。可以想到的是利用最小生成树的方式解决。每次枚举一条最小边,然后依次寻找比它大的边看是否可以组成一个最小生成树即可。
PS:这题的数据水了。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int maxn = 2005;
const int maxm = 15005;
const int inf = 0x3f3f3f3f;
struct Edge
{int u,v,c;bool operator < (const Edge &rhs) const{return c < rhs.c;}
}edge[maxm];
int n,m,ans,fa[maxn],sum[maxn];int find(int x)
{if(fa[x] == x) return x;return fa[x] = find(fa[x]);
}int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i = 1; i <= m; i++)scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].c);sort(edge+1,edge+1+m);ans = inf;for(int i = 1; i <= m; i++){int maxv = edge[i].c;int minv = edge[i].c;for(int j = 1; j <= n; j++) fa[j] = j,sum[j] = 1;for(int j = i; j <= m; j++){int u = edge[j].u,v = edge[j].v;int fu = find(u);int fv = find(v);if(fu != fv){maxv = edge[j].c;fa[fv] = fu;sum[fu] += sum[fv];}}if(sum[find(n)] == n) ans = min(ans,maxv - minv);}if(ans == inf) printf("-1\n");else printf("%d\n",ans);}return 0;
}
hdu 5624 KK's Reconstruction(最小生成树)相关推荐
- HDU 5624 KK's Reconstruction
这题目测是数据水了.我这种暴力写法显然是可以卡超时的. 假设有2000个点,15000条边,前面10000条不能构成树,后面5000条可以,这种数据显然可以卡超时. #include <stdi ...
- HDU 1301 Jungle Roads(裸最小生成树)
题目链接 今天做了好几个模版最小生成树...贴一个kurskral. 1 /* 2 HDU 1301 Jungle Roads 3 最小生成树Kurskal模版 4 */ 5 #include < ...
- hdu 1879 继续通畅工程(最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1879 /************************************************* ...
- HDU 1162 Eddy's picture (最小生成树)(java版)
Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
http://acm.hdu.edu.cn/showproblem.php?pid=4408 题意:求最小生成树个数 题解:对于Kruskal算法,我们发现,最小生成树要想用多种方法就要有长度相同的边 ...
- HDU-5624 -KK's Reconstruction(并查集+枚举)
Problem Description Our lovely KK has a difficult Social problem. A big earthquake happened in his a ...
- hdu 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit: 2000/ ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...
赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下.(都是greedy) Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束.判断加入(v,w)是否 ...
最新文章
- java按钮监听休眠_java-休眠监控解决方案
- torch max 判断与筛选
- wxPython和PyQt谁才是最赞的Python GUI库?
- STM32的独立看门狗(IWDG)看门狗时间计算
- ubuntu android设备 no permissions
- Griview中的删除按钮添加“确认提示”
- 35载再忆华罗庚精神:我们应培养怎样的数学大师?​
- 2018亚太CDN峰会开幕,阿里云王海华解读云+端+AI的短视频最佳实践
- 二层交换机 不在同一子网_从二层交换机来说为什么三层交换机比路由器转发速率快...
- [转] CPU GPU TPU
- 给mysql 授权 命令_mysql中授权命令grant用法详解:
- Get value from agent failed:cannot connect to[[192.168.1.113];10050]:[111]Co
- 5G时代下,如何做好个人信息保护?
- linux 设备树 usb控制器,linux 设备树中 dwc3 节点的phys参数含义
- 网易之小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.需要根据给定的w,x,y,z,求出集合中一共有多少个元素。
- powerquery分组_PowerQuery分组返回所有行之后还原列顺序
- JavaScript的函数(function)
- 【我的Android进阶之旅】Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件
- 6、查询学过“张三”老师所教的所有课的同学的学号、姓名(重点)
- uefi装完系统后无法引导_uefi gpt安装win7启动不了如何解决_uefi gpt装win7后无法启动怎么办...