UVA1395 Slim Span 解题报告

UVA1395 Slim Span 解题报告

题目链接

https://vjudge.net/problem/UVA-1395

题目大意

给出一个n(n≤100)结点的图,求苗条度(最大边减最小边的值)尽量小的生成树。

解题思路

将边按照权值从小到大排序之后,如果一个连续边集[l, r]中的边可以使得n个点全部联通,则一定存在一个苗条度不大于e[r].w - e[l].w的生成树,枚举l和r

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
const int maxn = 1e4 + 10;
const int INF = 0x7fffffff;
const int mod = 1e9 + 7;
struct Edge {int u, v, w;bool operator < (Edge &other) const {return w < other.w;}
} e[maxn];
int fa[maxn];
int n, m;void init() {for (int i = 0; i < maxn; i++) {fa[i] = i;}
}int findRoot(int x) {if (x == fa[x])return x;return fa[x] = findRoot(fa[x]);
}void solve() {while (cin >> n >> m, n != 0) {for (int i = 0; i < m; i++) {cin >> e[i].u >> e[i].v >> e[i].w;}if (m == 0) {cout << -1 << endl;continue;}sort(e, e + m);// 将边按照权值从小到大排序之后,如果一个连续边集[l, r]中的边可以使得n个点全部联通,则一定存在一个苗条度不大于e[r].w - e[l].w的生成树,枚举l和rint ans = INF;for (int l = 0; l < m; l++) {init();int cnt = 0;for (int r = l; r < m; r++) {int faA = findRoot(e[r].u);int faB = findRoot(e[r].v);if (faA != faB) {fa[faA] = faB;cnt++;if (cnt == n - 1) {ans = min(ans, e[r].w - e[l].w);break;}}}}if (ans < INF)cout << ans << "\n";elsecout << -1 << "\n";}
}int main() {freopen("in.txt", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout << fixed;cout.precision(18);int Case = 1;// cin >> Case;while (Case--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云开发笔记NO.24】中间件和中台

在云开发领域&#xff0c;中间件是一个至关重要的概念&#xff0c;它扮演着连接不同技术组件和应用程序的桥梁角色。中间件&#xff0c;顾名思义&#xff0c;是处于两个应用程序或系统之间的软件层&#xff0c;其主要负责屏蔽底层操作系统的复杂性&#xff0c;为上层应用程序提…

学习java第三十六天

Spring 官网列出的 Spring 的 6 个特征: 核心技术 &#xff1a;依赖注入(DI)&#xff0c;AOP&#xff0c;事件(events)&#xff0c;资源&#xff0c;i18n&#xff0c;验证&#xff0c;数据绑定&#xff0c;类型转换&#xff0c;SpEL。 测试 &#xff1a;模拟对象&#xff0c;…

题目 2016: 新生的入队仪式

题目描述: 有一名新生加入了合唱队&#xff0c;我们给他举办了一个非常大的欢迎仪式。欢迎过后&#xff0c;同学们想要给他安排一个合唱时&#xff0c;他需要站的位置。而合唱队是两面低&#xff0c;中间高的。这个同学可能会站在左面或者右面&#xff0c;或者&#xff0c;他作…

C++ vector顺序表模拟实现

目录 前言&#xff1a; 模拟实现&#xff1a; 构造函数&#xff1a; 析构函数&#xff1a; 容量调整&#xff08;reserve&#xff09;&#xff1a; resize函数&#xff1a; 尾插&#xff08;push_back&#xff09;: 尾删&#xff08;pop_back&#xff09;: 插入&#xff…

C++ | Leetcode C++题解之第8题字符串转换整数atoi

题目&#xff1a; 题解&#xff1a; class Automaton {string state "start";unordered_map<string, vector<string>> table {{"start", {"start", "signed", "in_number", "end"}},{"signed…

如何判断超级充电测试的性能

超级充电测试是电动汽车充电设备性能评估的重要环节&#xff0c;其性能的好坏直接影响到电动汽车的充电效率和使用寿命。以下是判断超级充电测试性能的几个关键因素&#xff1a;这是衡量超级充电测试性能的最直接指标&#xff0c;充电速度快意味着电动汽车可以在更短的时间内完…

商业分析思维与实践:用数据分析解决商业问题

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

日期时间相关的类

分界线jdk8 jdk8之前和之后分别提供了一些日期和时间的类&#xff0c;推荐使用jdk8之后的日期和时间类 Date类型 这是一个jdk8之前的类型&#xff0c;其中有很多方法已经过时了&#xff0c;选取了一些没有过时的API //jdk1.8之前的日期 Date Date date new Date(); // 从1970年…

区块链的网络架构有哪些?

区块链技术的兴起正在深刻地改变着互联网的格局。它不仅提供了去中心化、数据透明、难以篡改等优势&#xff0c;还为各种应用场景提供了新的可能性。为了更好地理解区块链&#xff0c;我们需要深入探讨其网络架构。 区块链网络架构主要由以下几个部分组成&#xff1a; 1. 区块…

Web 前端性能优化之五:构建优化

4、构建优化 资源的合并与压缩所涉及的优化点包括两方面&#xff1a;一方面是减少HTTP的请求数量&#xff0c;另一方面是减少HTTP请求资源的大小。 1、HTML 压缩 1、什么是 HTML 压缩 百度首页部分 HTML 源代码 谷歌首页部分 HTML 源代码 虽然这些格式化的字符能带来很好的代…

SpringBoot及其特性

0.前言 Spring 框架提供了很多现成的功能。那么什么是 Spring Boot&#xff1f;使用 Spring 框架&#xff0c;我们可以避免编写基础框架并快速开发应用程序。为了让 Spring 框架提供基础框架&#xff0c;我们需要向 Spring 框架描述有关我们的应用程序及其组件的信息。 不只是…

OpenAI Sora:浅析文生视频模型Sora以及技术原理简介

一、Sora是什么&#xff1f; Sora官方链接&#xff1a;https://openai.com/sora 视频模型领头羊Runway Gen 2、Pika等AI视频工具&#xff0c;都还在突破几秒内的连贯性&#xff0c;而OpenAI&#xff0c;已经达到了史诗级的纪录。 OpenAI&#xff0c;永远快别人一步&#xff0…

Node.js 常用命令及其详细用法

以下是 40 个 Node.js 常用命令及其详细用法&#xff0c;每个命令都附带了相应的代码示例&#xff1a; 1、npm init 用途&#xff1a;初始化一个新的 Node.js 项目。用法&#xff1a;在终端中执行 npm init 命令&#xff0c;并按照提示填写项目信息。代码示例&#xff1a;无需代…

C语言面试题之判定字符是否唯一

判定字符是否唯一 实例要求 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同 实例分析 1、使用一个大小为 256 的bool数组 charSet 来记录字符是否出现过&#xff1b;2、遍历字符串时&#xff0c;如果字符已经在数组中标记过&#xff0c;则返回 false&a…

Golang 开发实战day08 - Multiple Return values

Golang 教程08 - Multiple Return values 1. Multiple return values 1.1 如何理解多个返回值&#xff1f; Go语言中的多返回值&#xff0c;就像你听了一首歌曲yellow&#xff0c;可以从歌曲里反馈出忧郁和害羞&#xff01;Goland的多个返回值就类似于如此&#xff0c;设定一…

计算机视觉(Computer Vision)知识点

计算机视觉Computer Vision 知识点 计算机视觉1. 文档处理涉及哪些类型&#xff0c;是否需要ocr识别某类文档&#xff0c;用ocr识别过程中有什么难点和问题&#xff0c;相应的处理策略有哪些&#xff1f;2. 池化层是什么&#xff1f;3. 最大池化是什么?4. 什么是平均池化?5. …

LangChain - OpenGPTs

文章目录 MessageGraph 消息图认知架构AssistantsRAGChatBot 持久化配置新模型新工具astream_events总结 关键链接&#xff1a; OpenGPT GitHub 存储库YouTube 上的 OpenGPT 演练LangGraph&#xff1a;Python、JS 两个多月前&#xff0c;在 OpenAI 开发日之后&#xff0c;我们…

Springboot中JSCH的使用

Springboot中JSCH的使用 1. JSCH简介 JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器&#xff0c;使用端口转发&#xff0c;X11转发&#xff0c;文件传输等等。 你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器…

检定重型铸铁平台的方法——北重厂家

检定重型铸铁平台的方法一般包括以下几个方面&#xff1a; 1.外观检查&#xff1a;检查平台表面是否平整和光滑&#xff0c;是否有明显的裂纹、磨损或损坏等情况。 2.尺寸检测&#xff1a;使用专用的测量工具&#xff0c;如千分尺、测微计等&#xff0c;测量平台的尺寸&#x…

Day107:代码审计-PHP模型开发篇MVC层RCE执行文件对比法1day分析0day验证

目录 MVC 架构 CNVD-代码执行1day-lmxcms1.40版本 CNVD-命令执行1day-baijiacms4.1.4版本 知识点&#xff1a; 1、PHP审计-MVC开发-RCE&代码执行 2、PHP审计-MVC开发-RCE&命令执行 3、PHP审计-MVC开发-RCE&文件对比 MVC 架构 MVC流程&#xff1a; Controller截…