【一本通】最小圈

news2024/12/15 9:42:21

【一本通】最小圈


💐The Begin💐点点关注,收藏不迷路💐

对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过k个节点,那么一个圈的平均值为圈上k条边权的和除以k,现要求其中的最小值

输入

第一行2个正整数,分别为n和m

以下m行,每行3个数,表示边连接的信息,

输出

一行一个数,表示最小圈的值,保留8位小数。

样例输入
【样例输入1】

4 5
1 2 5
2 3 5
3 1 5
2 4 3
4 1 3

【样例输入2】

2 2
1 2 -2.9
2 1 -3.1

样例输出
【样例输出1】

3.66666667

【样例输出2】

-3.00000000

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef double Double;  // 定义别名Double表示double类型
const int MAX_NODE_NUM = 3005;  // 最大节点数量
const int MAX_EDGE_NUM = 10005; // 最大边数量
const Double PRECISION = 1e-10;   // 精度限制

// 快速读取整数
inline void readInt(int &num) {
    num = 0;
    char ch = getchar();
    while (ch < ‘0’ || ch > ‘9’) ch = getchar();
    while (ch >= ‘0’ && ch <= ‘9’) {
        num = (num << 1) + (num << 3) + (ch ^ 48);
        ch = getchar();
    }
}

int nodeNum;  // 节点数量
int edgeNum;  // 边数量
int edgeIndex;  // 边的索引
int head[MAX_NODE_NUM]; // 邻接表头指针
Double dist[MAX_NODE_NUM]; // 最短距离
bool visited[MAX_NODE_NUM];  // 节点访问标记

struct Edge {
    int nextEdgeIndex;  // 下一条边的索引
    int targetNode;  // 目标节点
    Double edgeWeight; // 边的权重
} edges[MAX_EDGE_NUM << 1]; // 边数组

// 插入边
inline void insertEdge(int fromNode, int toNode, int weight) {
    edgeIndex++;
    edges[edgeIndex].nextEdgeIndex = head[fromNode];
    edges[edgeIndex].targetNode = toNode;
    edges[edgeIndex].edgeWeight = (Double)weight;
    head[fromNode] = edgeIndex;
}

// 判断是否存在负权环,通过调整limit参数判断
bool checkNegativeCycle(int startNode, Double limit) {
    visited[startNode] = true;
    for (int i = head[startNode]; i; i = edges[i].nextEdgeIndex) {
        int target = edges[i].targetNode;
        if (dist[target] > dist[startNode] + edges[i].edgeWeight - limit) {
            if (visited[target]) return true;
            else {
                dist[target] = dist[startNode] + edges[i].edgeWeight - limit;
                if (checkNegativeCycle(target, limit)) return true;
            }
        }
    }
    return visited[startNode] = false;
}

// 判断是否存在负权环,limit为判断阈值
inline bool hasNegativeCycle(Double limit) {
    memset(visited, 0, sizeof(visited));
    memset(dist, 0, sizeof(dist));
    for (int i = 1; i <= nodeNum; ++i)
        if (checkNegativeCycle(i, limit)) return true;
    return false;
}

int main() {
    readInt(nodeNum);
    readInt(edgeNum);
    for (int i = 1; i <= edgeNum; ++i) {
        int from, to, weight;
        readInt(from);
        readInt(to);
        readInt(weight);
        insertEdge(from, to, weight);
    }
    Double left = 0.0;
    Double right = 50000.0;
    Double mid;
    while (right - left > PRECISION) {
        mid = (left + right) / 2.0;
        if (hasNegativeCycle(mid)) right = mid;
        else left = mid;
    }
    printf(“%.8lf”, right);
    return 0;
}

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

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

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

相关文章

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候&#xff0c;有介绍到template模块&#xff0c;而template模块对模板文件进行渲染时&#xff0c;使用的就是jinja2模板引擎&#xff0c;jinja2本身就是基于python的模板引擎&#xff0c;所以下面先来了解一下jinjia2模板的一些用法 基…

【USB-HID】“自动化键盘“

这里写目录标题 【USB-HID】"自动化键盘"1. 前言2. 框架3. 实现3.1 模拟键盘按键输入 【USB-HID】“自动化键盘” 1. 前言 最近从朋友那了解了一种"自动化键盘"&#xff0c;能够通过上位机录制按键脚本&#xff0c;然后执行脚本&#xff0c;实现物理键盘…

使用ECK 快速部署 Elasticsearch 集群 + Kibana

部署 ECK [2.12] 安装说明 ElasticCloudonKubernetes(ECK)是一个 Elasticsearch Operator&#xff0c;但远不止于此。ECK 使用 Kubernetes Operator 模式构建而成&#xff0c;需要安装在您的 Kubernetes 集群内&#xff1b; 借助 Elastic Cloud on Kubernetes (ECK)&#xff0…

ruoyi Cannot find module ‘@/views/system/user/index‘

Cannot find module /views/system/user/index 删除node_module 后打包成功

从开始实现扩散概率模型 PyTorch 实现

目录 一、说明 二、从头开始实施 三、线性噪声调度器 四、时间嵌入 五、下层DownBlock类块 六、中间midBlock类块 七、UpBlock上层类块 八、UNet 架构 九、训练 十、采样 十一、配置&#xff08;Default.yaml&#xff09; 十二、数据集 (MNIST) keyword&#xff1a; Diffusion…

航空航天总线协议分析ARINC429

ARINC429是商用飞机和运输机运用最广泛的总线之一&#xff0c;ARINC是美国航空无线电公司(Aeronautical Radio INC.)的缩写&#xff0c;ARINC429总线协议是美国航空电子工程委员会于1977年7月提出发表并获批准使用&#xff0c;它的规范全称是数字式信息传输系统(Digital Inform…

Unity UGUI图片循环列表插件

效果展示&#xff1a; 下载链接&#xff1a;https://gf.bilibili.com/item/detail/1111843026 概述&#xff1a; LoopListView2 是一个与 UGUI ScrollRect 相同的游戏对象的组件。它可以帮助 UGUI ScrollRect 以高效率和节省内存的方式支持任意数量的项目。 对于具有10,000个…

【经验分享】私有云运维的知识点

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…

解决MAC装win系统投屏失败问题(AMD显卡)

一、问题描述 电脑接上HDMI线后&#xff0c;电脑上能显示有外部显示器接入&#xff0c;但是外接显示器无投屏画面 二、已测试的方法 1 更改电脑分辨&#xff0c;结果无效 2 删除BootCamp&#xff0c;结果无效 3更新电脑系统&#xff0c;结果无效 4 在设备管理器中&#…

huggingface NLP -Transformers库

1 特点 1.1 易于使用&#xff1a;下载、加载和使用最先进的NLP模型进行推理只需两行代码即可完成。 1.2 灵活&#xff1a;所有型号的核心都是简单的PyTorch nn.Module 或者 TensorFlow tf.kears.Model&#xff0c;可以像它们各自的机器学习&#xff08;ML&#xff09;框架中的…

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习&#xff1a;已对训练数据完成标记 分类&#xff1a;根据数据及其分类信息来进行训练&#xff0c;使模型能够对新的数据进行分类 回归&#xff1a;给出一组特征值来预测目标数值 2. 无监督学习&#xff1a;没有对训练数据进行任…

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测

【算法介绍】 ddddocr是一个强大的Python OCR&#xff08;光学字符识别&#xff09;库&#xff0c;特别适用于验证码识别。它利用深度学习技术&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff0c;对图像中的文字进行…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

云服务器搭建lamp的wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Apache1.2 检查是否安装Mysql1.3 检查是否安装PHP 二、安装Apache截图 三、安装Mysql3.1 安全安装配置3.2 修改权限和密码3.3 重启MySQL服务 四、安装PHP4.1 测试截图 五、下载并安装wordpress以及配置5.1 下载并解压移动5…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面&#xff0c;无法继承Pen定义绘制的对象直线等&#xff08;颜色&#xff0c;粗细&#xff09;Font定义文本格式&#xff08;字体&#xff0c;字号&#xff09; 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

babeltrace与CTF相关学习笔记-4

babeltrace与CTF相关学习笔记-4 写在前面metadata_string 重头开始定位&#xff0c;操作meta的位置bt_ctf_trace_get_metadata_string stream部分内存的问题 写在前面 正在并行做几件事。 在编译过程中&#xff0c;突然想到&#xff0c;还是再详细研究一下之前的例程。 一是详…

多旋翼无人机 :桨叶设计—跷跷板结构

多旋翼无人机 &#xff1a;桨叶设计——跷跷板结构 前言跷跷板结构 前言 2024年11月&#xff0c;大疆发布了最新的农业无人机T70和T100。其中T70不同于以往的机型&#xff0c;在桨夹处采用了翘翘板结构&#xff0c;大疆将其命名为“挥舞桨叶”。 T70 无人机如下 放大其中螺旋…

低通滤波器,高通滤波器,公式

1 低通滤波器 &#xff1a;输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后&#xff0c;波形光滑&#xff0c;绿色波形。一致 4 电容充电速度跟不上输入信号的速度&#xff08;因为加了电阻&#xff0c;限制了电流&…

如何打造个人知识体系?

第一&#xff0c;每个人的基本情况不同。比如我有一个类别跟「设计」相关&#xff0c;这是自己的个人爱好&#xff0c;但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关&#xff0c;因为里面很多表达可以借用到演讲或写作中&#xff0c;这也不适合所有人。 第二&am…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…