图论相关问题

1. 拓扑排序+bitset


第一次使用bitset,复杂度:N/32,比N小

所以总的时间复杂度为O(N*(N+M)/32)

#include <iostream>
#include <bitset>
#include <queue>
using namespace std;
const int N = 3e4+20;
bitset<N> f[N];
struct NODE{int to, next;
}edge[N];
int head[N], cnt, inv[N], n, m;
void add(int u, int v) {++cnt;edge[cnt].to = v, edge[cnt].next = head[u], head[u] = cnt;
}void topo() {queue<int> q;for(int i=1; i<=n; i++) {if(!inv[i]) q.push(i);}while(!q.empty()) {int x = q.front();q.pop();f[x][x] = 1; //自己可到达for(int i = head[x]; i; i = edge[i].next) {int v = edge[i].to;f[v] |= f[x];inv[v]--;if(!inv[v]) q.push(v);}}for(int i=1; i<=n; i++) printf("%d\n", f[i].count()); //二进制中1的个数
}int main() {int u, v; scanf("%d%d", &n, &m);while(m--){scanf("%d%d", &u, &v);add(v, u); //反向建图inv[u]++;}topo();return 0;
}
2. 01分数规划, spfa判断正环

题目链接:Acwing 观光奶牛

#include <bits/stdc++.h>
using namespace std;
const int N = 1050, M = 5005;
int head[N], cnt, n, ct[N], st[N];
double dis[N], f[N];
struct NODE{int to, next, w;
}edge[M];void add(int u, int v, int w){++cnt;edge[cnt].to = v, edge[cnt].next = head[u], head[u] = cnt;edge[cnt].w = w;
}bool spfa(double mid) {queue<int> q;for(int i=1; i<=n; i++) q.push(i), st[i] = true, dis[i] = ct[i] = 0;while(!q.empty()) {int x = q.front();q.pop();st[x] = false;for(int i = head[x]; i; i = edge[i].next) {int v = edge[i].to;if( dis[v] < dis[x] + f[x] - mid * edge[i].w) { //判断正环dis[v] = dis[x] + f[x] - mid * edge[i].w;ct[v] = ct[x]+1;if(ct[v] >= n) return true;if(!st[v]) {q.push(v), st[v] = true;}}}}return false;
}
int main() {int p; scanf("%d%d", &n, &p);for(int i=1; i<=n; i++) cin >> f[i];int a, b, w;while(p--) {scanf("%d%d%d", &a, &b, &w);add(a, b, w);}double l = 0, r = 1010, eps = 1e-4;while(r-l > eps) {double mid = (l+r)/2;if(spfa(mid)) l = mid;else r =mid;}printf("%.2lf", l);return 0;
}

 

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

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

相关文章

使用低版本vcpkg时,bootstrap-vcpkg.bat无法生成vcpkg.exe的可能原因

缘由 需要使用vcpkg中低版本的第三方库&#xff0c;下载vcpkg后&#xff0c;回退至指定版本&#xff0c;运行bootstrap-vcpkg.bat生成vcpkg.exe时&#xff0c;命令行窗口总是一闪而过&#xff0c;但是vcpkg.exe却没有生成。 添加pause&#xff0c;查看错误 编辑bootstrap-vc…

09_Redlock算法和底层源码分析

Redlock算法和底层源码分析 一、当前代码为8.0版接上一步 自研分布式锁的重点&#xff1a; 按照juc里面Lock接口规范进行编写lock加锁关键逻辑 加锁&#xff1a;在redis中&#xff0c;加锁实际上是给key设置一个值&#xff0c;为避免死锁&#xff0c;并给key一个过期时间自旋…

腾讯云轻量应用服务器配置(详细版)

腾讯云轻量应用服务器CPU内存带宽配置高&#xff0c;成本很低&#xff0c;腾讯云百科来详细说下腾讯云服务器从购买、配置到网站上线全流程&#xff0c;包括轻量服务器配置选择、应用镜像选择、重置密码、防火墙开放端口教程等详细教程&#xff1a; 目录 一&#xff1a;注册腾…

vue的开发者工具下载『保姆级别』

1.先进官网 极简插件_Chrome扩展插件商店_优质crx应用下载 (zzzmh.cn) 2.搜索vue devtools&#xff0c;点击进去 3.下载插件 4.下载到文件下你自己的文件下&#xff1a;我的是下载到E盘下。 5.压缩到当前目录下 6.电脑进入拓展程序&#xff08;不同的浏览器操作不同&#xff…

在Visual Studio上,使用OpenCV实现人脸识别

1. 环境与说明 本文介绍了如何在Visual Studio上&#xff0c;使用OpenCV来实现人脸识别的功能 环境说明 : 操作系统 : windows 10 64位Visual Studio版本 : Visual Studio Community 2022 (社区版)OpenCV版本 : OpenCV-4.8.0 (2023年7月最新版) 实现效果如图所示&#xff0…

系统卡死问题分析

CPU模式 CPU Frequency Scaling (CPUFREQ) Introduction CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗…

CloudCompare——统计滤波

目录 1.统计滤波2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创&#xff0c;CloudCompare——统计滤波&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 1.统计滤波 算法原理见&#xff1a;PCL 统计滤波器…

使用 Elasticsearch 轻松进行中文文本分类

本文记录下使用 Elasticsearch 进行文本分类&#xff0c;当我第一次偶然发现 Elasticsearch 时&#xff0c;就被它的易用性、速度和配置选项所吸引。每次使用 Elasticsearch&#xff0c;我都能找到一种更为简单的方法来解决我一贯通过传统的自然语言处理 (NLP) 工具和技术来解决…

韩顺平Linux 四十四--

四十四、rwx权限 权限的基本介绍 输入指令 ls -l 显示的内容如下 -rwxrw-r-- 1 root 1213 Feb 2 09:39 abc0-9位说明 第0位确定文件类型&#xff08;d , - , l , c , b) l 是链接&#xff0c;相当于 windows 的快捷方式- 代表是文件是普通文件d 是目录&#xff0c;相…

录制游戏视频的软件有哪些?分享3款软件!

“有录制游戏视频的软件推荐吗&#xff1f;最近迷上了网游&#xff0c;想录制点自己高端操作的游戏画面&#xff0c;但是不知道用什么软件录屏比较好&#xff0c;就想问问大家&#xff0c;有没有好用的录制游戏视频软件。” 在游戏领域&#xff0c;玩家们喜欢通过录制游戏视频…

《Go 语言第一课》课程学习笔记(四)

构建模式&#xff1a;Go Module 的 6 类常规操作 为当前 module 添加一个依赖 我们如何为一个 Go Module 添加一个新的依赖包呢&#xff1f; 如果我们要为项目增加一个新依赖&#xff1a;github.com/google/uuid&#xff0c;我们首先会更新源码&#xff1a;package mainimpor…

【3D激光SLAM】LOAM源代码解析--scanRegistration.cpp

系列文章目录 【3D激光SLAM】LOAM源代码解析–scanRegistration.cpp 写在前面 本系列文章将对LOAM源代码进行讲解&#xff0c;在讲解过程中&#xff0c;涉及到论文中提到的部分&#xff0c;会结合论文以及我自己的理解进行解读&#xff0c;尤其是对于其中坐标变换的部分&…

更多openEuler镜像加入AWS Marketplace!

自2023年7月openEuler 22.03 LTS SP1正式登陆AWS Marketplace后&#xff0c;openEuler社区一直持续于在AWS上提供更多版本。 目前&#xff0c;openEuler22.03 LTS SP1 ,SP2两个版本及 x86 arm64两种架构的四个镜像均可通过AWS对外提供&#xff0c;且在亚太及欧洲15个Region开放…

【数据结构】吃透单链表!!!(详细解析~)

目录 前言&#xff1a;一.顺序表的缺陷 && 介绍链表1.顺序表的缺陷2.介绍链表&#xff08;1&#xff09;链表的概念&#xff08;2&#xff09;链表的结构&#xff08;3&#xff09;链表的功能 二.单链表的实现1.创建节点的结构2.头文件函数的声明3.函数的实现&#xff…

第十五章:联邦学习攻防实战

代码 联邦学习的后门攻击案例 联邦学习的模型压缩案例 联邦学习的差分隐私案例 联邦学习的同态加密案例 联邦学习的参数稀疏化案例

EndNote-文献管理工具【安装篇】

下载&#xff1a;&#xff08;文末附安装包&#xff0c;建议使用这一个&#xff0c;官网都需要付费&#xff09; 打开安装包&#xff0c;双击&#xff1a; 安装完了之后不要直接运行&#xff0c;因为EndNote软件少了一个类型的软件&#xff1a;GB/T17714。 因此我们需要把这个…

VBA技术资料MF45:VBA_在Excel中自定义行高

【分享成果&#xff0c;随喜正能量】可以不光芒万丈&#xff0c;但不要停止发光。有的人陷入困境&#xff0c;不是被人所困&#xff0c;而是自己束缚自己&#xff0c;这时"解铃还须系铃人"&#xff0c;如果自己无法放下&#xff0c;如何能脱困&#xff1f; 。 我给V…

Liunx系统编程:进程信号的概念及产生方式

目录 一. 进程信号概述 1.1 生活中的信号 1.2 进程信号 1.3 信号的查看 二. 信号发送的本质 三. 信号产生的四种方式 3.1 按键产生信号 3.2 通过系统接口发送信号 3.2.1 kill -- 向指定进程发送信号 3.2.2 raise -- 当自身发送信号 3.2.3 abort -- 向自身发送进程终止…

verilog学习笔记6——锁存器和触发器

文章目录 前言一、锁存器1、基本SR锁存器——或非门实现2、基本SR锁存器——与非门实现3、门控SR锁存器4、门控D锁存器 二、触发器1、 电平触发的RS触发器/同步SR触发器2、电平触发的D触发器/D型锁存器3、边沿触发的D触发器4、脉冲触发的RS触发器 三、边沿触发、脉冲触发、电平…

【C# 基础精讲】LINQ to XML查询

LINQ to XML 是 C# 中用于查询和操作 XML 数据的强大工具。它允许您使用 LINQ 查询语法对 XML 文档进行查询、过滤、投影等操作&#xff0c;从而更加方便地处理 XML 数据。本文将详细介绍 LINQ to XML 的基本概念、常见操作以及示例&#xff0c;帮助您了解如何在 C# 中使用 LIN…