Slim Span POJ 3522 (最小差值生成树)
题意:
最小生成树找出来最小的边权值总和使得n个顶点都连在一起。那么这找出来的边权值中的最大权值和最小权值之差就是本题的结果
但是题目要求让这个输出的结果最小,也就是差值最小。那么这就不是最小生成树了
题解:
思路1、
让所有边这个权值从小到大排序,之后一个权值一个权值的枚举,枚举那个权值就证明我们肯定会用到这个权值,然后让这个权值和其他边的权值做差
用这个差来代替原来的权值,再去进行最小生成树
思路2、
让所有边这个权值从小到大排序,之后一个权值一个权值的枚举,枚举到的这个权值代表我们用来连接的n个点的所有边中权值最小值就是它
然后再进行最小生成树,只要边的权值小于它的都不用这条边
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<vector>
6 #include<queue>
7 using namespace std;
8 const int maxn=105;
9 const int INF=0x3f3f3f3f;
10 int n,m,fa[maxn];
11 struct shudui
12 {
13 int u,v,w;
14 } e[maxn*maxn];
15 bool mmp(shudui x,shudui y)
16 {
17 return x.w<y.w;
18 }
19 int finds(int x)
20 {
21 if(x!=fa[x])
22 {
23 int y=finds(fa[x]);
24 fa[x]=y;
25 return y;
26 }
27 return x;
28 }
29 void init()
30 {
31 for(int i=1; i<=n; ++i)
32 {
33 fa[i]=i;
34 }
35 }
36 int main()
37 {
38 while(~scanf("%d%d",&n,&m))
39 {
40 if(!n && !m) break;
41 //memset(mp,0,sizeof(mp));
42 for(int i=1; i<=m; ++i)
43 {
44 int u,v,w;
45 scanf("%d%d%d",&u,&v,&w);
46 e[i].u=u;
47 e[i].v=v;
48 e[i].w=w;
49 }
50 e[0].w=-1;
51 init();
52 sort(e+1,e+1+m,mmp);
53 int minn=INF,flag=0;
54 if(m==0) flag=1;
55 for(int i=1; i<=m; ++i)
56 {
57 if(e[i].w!=e[i-1].w)
58 {
59 init();
60 int ans=0;
61 for(int j=i; j<=m; ++j)
62 {
63 int x=e[j].u;
64 int y=e[j].v;
65 int z=e[j].w;
66 int fx=finds(x);
67 int fy=finds(y);
68 if(fx!=fy)
69 {
70 fa[fx]=fy;
71 ++ans;
72 }
73 if(ans==n-1)
74 {
75 //if(i!=1)
76 //minn=min(minn,z-e[i-1].w);
77 //else
78 minn=min(minn,z-e[i].w);
79 //printf("%d %d %d\n",i,z,e[i-1].w);
80 }
81 }
82 if(ans!=n-1 && i==1)
83 {
84 flag=1;
85 break;
86 }
87 }
88 }
89 if(!flag)
90 printf("%d\n",minn);
91 else printf("-1\n");
92 }
93 return 0;
94 }
Slim Span POJ 3522 (最小差值生成树)的更多相关文章
- POJ 3522 最小差值生成树(LCT)
题目大意:给出一个n个节点的图,求最大边权值减去最小边权值最小的生成树. 题解 Flash Hu大佬一如既往地强 先把边从小到大排序 然后依次加入每一条边 如果已经连通就把路径上权值最小的边删去 然后 ...
- LuoguP4234_最小差值生成树_LCT
LuoguP4234_最小差值生成树_LCT 题意: 给出一个无向图,求最大的边权减最小的边权最小的一棵生成树. 分析: 可以把边权从大到小排序,然后类似魔法森林那样插入. 如果两点不连通,直接连上, ...
- [luogu4234]最小差值生成树
[luogu4234]最小差值生成树 luogu 从小到大枚举边,并连接,如果已连通就删掉路径上最小边 lct维护 \(ans=min(E_{max}-E_{min})\) #include<b ...
- P4234 最小差值生成树
题目 P4234 最小差值生成树 做法 和这题解法差不多,稍微变了一点,还不懂就直接看代码吧 \(update(2019.2):\)还是具体说一下吧,排序,直接加入,到了成环情况下,显然我们要把此边代 ...
- POJ 3522 Slim Span 最小差值生成树
Slim Span Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3522 Description Gi ...
- 洛谷.4234.最小差值生成树(LCT)
题目链接 先将边排序,这样就可以按从小到大的顺序维护生成树,枚举到一条未连通的边就连上,已连通则(用当前更大的)替换掉路径上最小的边,这样一定不会更差. 每次构成树时更新答案.答案就是当前边减去生成树 ...
- TZOJ 3710 修路问题(最小差值生成树kruskal或者LCT)
描述 xxx国“山头乡”有n个村子,政府准备修建乡村公路,由于地形复杂,有些乡村之间可能无法修筑公路,因此政府经过仔细的考察,终于得到了所有可能的修路费用数据.并将其公布于众,广泛征求村民的修路意见. ...
- 【刷题】洛谷 P4234 最小差值生成树
题目描述 给定一个标号为从 \(1\) 到 \(n\) 的.有 \(m\) 条边的无向图,求边权最大值与最小值的差值最小的生成树. 输入输出格式 输入格式: 第一行两个数 \(n, m\) ,表示图的 ...
- 洛谷P4234 最小差值生成树(lct动态维护最小生成树)
题目描述 给定一个标号为从 11 到 nn 的.有 mm 条边的无向图,求边权最大值与最小值的差值最小的生成树. 输入输出格式 输入格式: 第一行两个数 n, mn,m ,表示图的点和边的数量. ...
随机推荐
- Mybatis Plus 3.4版本之后分页插件的变化
一.MybatisPlusInterceptor 从Mybatis Plus 3.4.0版本开始,不再使用旧版本的PaginationInterceptor ,而是使用MybatisPlusInter ...
- mysqlG基于TID模式同步报错 (Last_IO_Errno: 1236)
mysqlG基于TID模式同步报错Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading da ...
- 小程序map学习:使用map获取当前位置并显示出来
在小程序开发的过程中,我碰到过一个做map的需求,在我开发的时候我碰到了一些问题,这里总结出来,给大家一些解决方法. 简易小程序dome下载 代码片段分享: js部分: var amapFile = ...
- RPC 实战与原理 精简版
什么是 RPC? RPC 有什么作用? RPC 步骤 为什么需要序列化? 零拷贝 什么是零拷贝? 为什么需要零拷贝? 如何实现零拷贝? Netty 的零拷贝有何不同? 动态代理实现 HTTP/2 特性 ...
- linux总线
编写驱动程序: 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/devic ...
- FTP使用Socket SSL流程认证(一)
关于Ftp使用SSL流程认证 本文章使用的是C#,ftp服务器为FileZilla 注:如果不是使用的Socket可以使用FtpWebRequst类,说实话,该类比较简单,但现在说的是SOCKET,网 ...
- 解决 win10 无法安装VS2019,visual studio installer下载进度始终为0
解决 win10 无法安装VS2019,visual studio installer下载进度始终为0 目录 解决 win10 无法安装VS2019,visual studio installer下载 ...
- Unix Socket 代理服务 unix域套接字
基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议) - royalrover - 博客园 https://www.cnblogs.com/accordion ...
- Property attribute.
class property(object): """ Property attribute. fget function to be used for getting ...
- SpringMVC听课笔记(一:SpringMVC概述)
地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...