Uva1395 Slim Span(最小生成树)

AICodeing:AI驱动的全栈开发革命 作为阿里/字节跳动的资深Java工程师,我们正站在研发效能革命的临界点上。本文将深入探讨如何利用AI技术重构全栈开发流程,实现从需求到上线的量子级提速。 阅读详情

题意:

给定一个无向图G(V,E),要求建图使得两点之间有且只有一条连通的道路,即最小生成树。输出最大边权值减最小边权值的差的最小值(苗条度)。
这里写图片描述
如图所示,(a) = 7-3=4; (b) = 6-3 =3; (c) = 7-5 = 2; (d) = 7-6=1;

解题思路:

根据图中的信息可知,连通的方式有许多种,所以我们需要枚举所有可能连通的方案。
首先将每个边按照权值从小到大排序。然后依次枚举区间[L,R]。
总共m条边。
例如:若第1条边到第m边能构成连通图,则苗条度肯定不会超过W[m]-W[i]。
于是我们从第2条边开始枚举到第m条边,依次类推。
分成三步骤:
1: 枚举并查集
2:利用并查集将所有点连通。
3:在连通的基础上找到最大边权值减最小边权值的差的最小值。

具体代码

#include <set>
#include <numeric>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
#include <sstream>
#include <map>
#include <functional>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define REP(idx1,num1) for(int idx1=0;idx1<(num1);idx1++)
#define pb push_back
#define empb emplace_back
#define mp make_pair
#define mem(s) memset(s,0,sizeof(s));
const double EPS = 1e-6;
const int maxn = 100 + 10;
int p[maxn];
struct Edge{
    int from,to,w;
}edge[maxn*maxn];
int cmp(Edge i, Edge j){ return i.w < j.w;}
int find(int x){
    int t = x;
    while(p[t] != t) t = p[t];
    int i = x,j;
    //路径优化
    while(i != t){
        j = p[i];
        p[i] = t;
        i = j;
    }
    return t;
}
void init(int n){
    for(int i = 1; i <= n; ++i) p[i] = i;
}
int main(){
    int n,m;
    while(~scanf("%d%d",&n,&m)&&n){

        for(int i = 1; i <= m; ++i){
            int a,b,w;scanf("%d%d%d",&a,&b,&w);
            if(a > b)swap(a,b);
            edge[i].from = a;edge[i].to = b;edge[i].w = w;
        }
        sort(edge+1,edge+1+m,cmp);
        /*
         for(int i = 1; i <=m; ++i){
         cout << edge[i].from<<" " << edge[i].to <<" "<<edge[i].w << endl;
         }
         */
        int cnt = 0;//判断是否连通,即边数 = 顶点数-1
        int ms = 1 << 30;
        int mae = -1;int mie = 1<<30;//初始化最大权值边,最小权值边
        bool flag = false;
        for(int i = 1; i <= m; ++i){
            mae = -1; mie = 1<<30;
            init(n);cnt = 0;
            for(int j = i; j <= m; ++j){
                Edge& u = edge[j];
                int x = find(u.from); int y = find(u.to);
                //cout << x <<" " << y << endl;
                if(x != y){
                    if(x > y) swap(x,y);
                    p[x] = y; cnt++; mae = max(mae,u.w); mie = min(mie,u.w);
                }
                //cout << cnt << endl;
                if(cnt == n-1){
                    ms = min(ms,mae - mie); flag = true; break;
                }
            }
        }
        if(flag)
            printf("%d\n",ms);
        else
            printf("-1\n");
    }
    return 0;
}
XSS漏洞之PDF生成:从XSS到服务端任意文件读取 XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达 阅读详情

相关推荐

MONAI教程<1>-安装

MONAI的安装非常简单,常用的有两种方法: 直接 pip install monai 从GitHub 上安装 monai是通常配合其他库一起使用的,比如pytorch, nibabel, skimage, pillow等等。缺什么直接pip install 就行

Tina姐的博客 1万+

Uva1395 Slim Span(最小生成树)

题意:   给出一个n个结点的无向图,找一棵苗条度(最大边减去最小边)最小的生成树。图中不含重边和自环。 题解:   首先对边的权值大小排序,从小到大开始枚举最小生成树。 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <map> #include <queue> using namespace std; c.

CV工程师呀 226

Ubuntu Server 22.04.5系统安装教程

该教程主要是演示在服务器上安装Ubuntu server 22.04系统的详细步骤,主要包含,安装系统前的准备(镜像的下载,启动盘的制作),安装系统时的语言选择,网络设置,切换镜像源(可根据实际需求来配置,本文使用清华镜像源),手动分区,用户设置,ssh服务安装等。以上就是关于Ubuntu Server 22.04系统安装的详细过程。

逆水行舟,不进则退。 7761

UVA1395 Slim Span

题目链接:点我 题意简述 求所有生成树中最大边权与最小边权差最小的,输出它们的差值。 按照并查集生成最小生成树的思路,将边按从小到大排序,然后生成一个树更新一下答案 #include&lt;cstdio&gt; #include&lt;cmath&gt; #include&lt;cstring&gt; #include&lt;vector&gt; #include&lt;algorith...

小灰狼与大白兔的博客 1259

Windows批处理脚本实战:用Ping命令打造简易网络监控工具(附完整代码)

本文介绍如何利用Windows批处理脚本和Ping命令,快速构建一个轻量级、自动化的网络监控工具。该方案无需额外安装软件,通过周期性探测目标IP连通性,并将结果(成功、失败及延迟)自动记录到带时间戳的日志文件中,适合中小团队或临时监控需求,实现低成本、高效率的网络状态监控。

5f4d3s2a1q的博客 494

泛微Ecology流程数据表结构解析:workflow_requestbase和workflow_currentoperator到底怎么关联查询?

本文深入解析泛微Ecology系统中workflow_requestbase和workflow_currentoperator表的结构与关联机制,提供SQL查询语句示例,帮助开发者高效查询流程数据。涵盖待办事项、已办事项、办结事项和流程监控等典型场景,并分享性能优化技巧和常见问题排查指南。

weixin_33738555的博客 808

紫书uva1395(苗条的生成树)

#include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; int n,m,a,b,len,pre[110]; struct node { int d1,d2,l; }e[10010]; bool com(node x,node y) { r...

qq_41758381的博客 222

LVGL 组件对齐方式说明

本文说明 LVGL(以 v8 为例)中常用的 lv_align_t对齐选项的含义与用法,对应界面设计工具里下拉列表中的以及等命名。

摸鱼专家 131

uva1395 - Slim Span(最小生成树)

先判断是不是连通图,不是就输出-1。 否则,把边排序,从最小的边开始枚举最小生成树里的最短边,对每个最短边用Kruskal算法找出最大边。 或者也可以不先判断连通图,而是在枚举之后如果ans还是INF,说明就没有,就输出-1. #include<iostream> #include<cstdio> #include<cstdlib> #inclu...

weixin_30797199的博客 119

基于SVD矩阵分解的用户购物篮预测分析实战

基于SVD矩阵分解的用户购物篮预测分析实战

360

有之以为利,无之以为用,在 RAP 开发里的虚实取舍

摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1303

UVA1395[Slim Span] Kruskal模板题

UVa1395 最小生成树 Kruskal 枚举

Venishel的博客 369

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信号方面,常见的格式有RGB888、RGB666、RGB565。为什么有什么多选择,主要还是取决于soc pin脚的多少来定。当然,pin脚越多,显示的颜色就越精准,还原度就越高。 举例来说,假设

嵌入式-老费,一个分享专业嵌入式知识的blog 2794

UVA 1395 Slim Span(最小生成树)

题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4141 思路:将边按从小到大排序,设l,r。则在[l,r]范围内的值一定小于等于w[r]-w[l],则若l...r之间的边可形成生成树,则更新答案,同时将l++,r=l。 #include #

哆啦AC梦的博客 623

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

uva1395-Slim Span(最小生成树应用)

title: uva1395-Slim Span(最小生成树应用) date: 2019-06-04 15:21:55 categories: ACM tags: [ACM,算法] 题目描述 给你一个无向图,问这个图的生成树当中,T值最小是多少? T:生成树当中,权值最大的边-权值最小的边 我的个人博客:https://www.kimiye.xyz 解题思路 显然这题要跟最小生成树有关系 ...

Flyyy‘s blog 421

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

uva 1395 Slim Span[最小生成树]

vua1395; 最小生成树; Kruskal算法

xxxxx 1198

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UVA 1395 Slim Span 最小生成树

题意:给你一个图,让你求这个图中所有生成树中满足题目条件的,这个条件是生成树中最长边与最短边的差值最小。 思路:根据最小瓶颈生成树的定义:在一个有权值的无向图中,求一个生成树最大边的权值尽量小。那么我可以从小到大枚举每一条边作为我所求生成树的最短边(即第一次以最短边求最小生成树,第二次删除第一条边,以第二条边为最短边求最小生成树,第三次删除第一条边和第二条边,以第三边为最短边求最小生成树。)然后

Ash.的博客 968

UVa1395 && POJ 3522 Slim Span [最小生成树]

UVa POJDescription求苗条度最小的生成树 苗条度指该生成树的最大边 - 最小边AlgorithmKruskal变形 先sort 然后枚举最小边 构建最小生成树HintUVa JAVA的RE 不知道为何= = POJ的JAVA才1.5 λ表达式是JAVA 1.8才有的 然后本人才疏学浅 除了λ表达式以外不会写自定义sort比较 所以CE = = C++就过了 会了C++

more time 2209

UVa 1395 Slim Span【最小生成树】

先将边权从小到大排序,然后对于边权集合[l,r][l,r][l,r],若此时的边权集合足以构成一棵树,那就记录答案:ans=min{tree[r].z−tree[l].z}ans=min\{tree[r].z-tree[l].z\}ans=min{tree[r].z−tree[l].z} #include &lt;cmath&gt; #include &lt;cstdio&gt; #include...

Yucohny 379

UVA 1395 - Slim Span 最小生成树

&#13; 链接:&#13; https://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8&amp;category=446&amp;page=show_problem&amp;problem=4141&#13; 题意:&#13; 给出一个n(n&lt;=100)结点的图,求苗条度(最大边减...

花海 182

Slim Span (UVA - 1395,最小生成树 + 简单应用)

一.题目链接: UVA-1395 二.题目大意: 给定 n 个点,m 条边的无向图. 定义生成树的 “苗条度” == max树边权值 - min树边权值. 求生成树的最小苗条度. 三.分析: 大体思路就是用 Kruskal 算法求解最小生成树. 由于生成树的 “苗条度” == max树边权值 - min树边权值 所以先sort 一遍边的权值 然后从小到大枚举生成树的最小权值边...

The___Flash的博客 273

Uva1395 POJ3522 Slim Span (最小生成树)

Description Given an undirected weighted graphG, you should find one of spanning trees specified as follows. The graphGis an ordered pair (V,E), whereVis a set of vertices {v1,...

anyanzhuo9864的博客 196

UVA1395 Slim Span(枚举最小生成树)

题意: 求最小生成树中,最大的边减去最小的边 最小值。 看了题解发现真简单=_= 将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include &l...

apk6909的博客 123

UVa 1395 Slim Span (最小生成树)

题意:给出一个n结点的图,求一棵生成树,使其最大边减最小边最小,并求出最小值。 思路:将所有边排序,然后暴力求最小生成树即可。 #include #include #include #include #include using namespace std; const int maxn = 10000; const int INF = 1e9 + 10; int n, m; int pre

Interstellar_的博客 474

苗条的生长树slim span,uva1395——最小生成树,kruskal

给出一个n(n kruskal算法: 对边权从小到大排序,然后枚举第一条边。根据kruskal的贪心思想,当最小的那条边确定了,那么MST的最大边也就随之确定,且剩余的边中没有比最大边的边权小的边。 菜比的代码总是很繁琐。为了判断所有点是否连通,就用了Union-find set的启发式合并——用一个cnt,记录选了多少次点就行了,煞笔! 而且我因为题目给的是无向图,就建了

fsdcyr 987

Uva1395.Slim Span(最小生成树变形)

Description给出n个点(n≤100)(n \le 100),m条边,求出最大边减最小边差值最小的生成树。Solution首先可以注意到n不是很大,最大只有100,自然而然想到的就是暴力的做法。将边按权值从小到大排序。在排好序的边中枚举[L,R]区间内的边,判断是否能形成最小生成树,若可以,则当前的差值就为e[R].w−e[L].we[R].w - e[L].w。可以注意到,对于枚举R的范围

Pengwill's Blog 333
上一篇: HDU1506(最大子矩阵)
下一篇: hdu1505 City game(最大子矩阵)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值