当前位置: 首页 > news >正文

搜索与图论(acwing算法基础)

文章目录

    • DFS
      • 排列数字
      • n皇后
    • BFS
      • 走迷宫
    • 拓扑序列
      • 单链表
      • 树与图的深度优先搜索
      • 模拟队列
      • 有向图的拓扑序列
    • bellman-ford
      • 有边数限制的最短路
    • spfa
      • spfa求最短路
      • spfa判断负环
    • Floyd
      • Floyd求最短路
    • Prim
      • Prim算法求最小生成树
    • Kruskal
      • Kruskal算法求最小生成树
    • 染色法判定二分图
      • 染色法判定二分图

DFS

排列数字

#include<iostream>
using namespace std;
int n ;
int a[10];
bool s[10];
void dfs(int u)
{if(u == n){for(int i = 0 ; i <n ; i++) cout << a[i] << " " ;cout << endl ;return;}for(int i = 1; i <= n ; i++){if(!s[i]){a[u] = i;s[i] = true ;dfs(u+1);a[u] = 0 ;s[i] = false;}}}
int main()
{cin >> n ;dfs(0);return 0;
}

n皇后

#include<iostream>
using namespace std;
const int N = 20 ;
char g[N][N] ;
bool c[N], x[N] , y[N];
int n , m ;
void dfs(int u)
{if(u == n){for(int i = 0 ; i < n; i++) cout << g[i] << endl;cout << endl;return ;}for(int i = 0 ; i < n ; i++){if(!c[i] && !x[u+i] && !y[u-i+n]){c[i] = x[u+i] = y[u-i+n] = true ;g[u][i] = 'Q';dfs(u+1);g[u][i] = '.';c[i] = x[u+i] = y[u-i+n] = false ;}}
}
int main()
{cin >> n;for(int i = 0 ; i < n ; i++)for(int j = 0 ; j < n ; j++)g[i][j] = '.' ;dfs(0);        return 0 ;
}

BFS

走迷宫

#include<iostream>
#include<cstring>
using namespace std;
typedef pair<int,int> PII ;
const int N = 110 ;
PII q[N * N];
int f[N][N] , d[N][N];
int n , m ;
int dx[] = {0,1,0,-1} , dy[] = {1,0,-1,0} ;
int bfs()
{memset(d , -1 , sizeof d);d[1][1] = 0 ;q[0] = {1,1};int hh = 0 , tt = 0 ;while(hh <= tt){auto t = q[hh++] ;for(int i = 0 ; i < 4 ; i++){int x = t.first + dx[i] , y = t.second + dy[i] ;if(x<=n &&x>0 && y<=m && y>0 && d[x][y] == -1 && f[x][y] == 0){q[++tt] = {x,y};d[x][y] = d[t.first][t.second] + 1 ;}}}return d[n][m];
}
int main()
{cin >> n >> m ;for(int i = 1 ; i <= n ; i++)for(int j = 1 ; j <= m ; j++)cin >> f[i][j];cout << bfs();return 0;
}

拓扑序列

单链表

点击跳转至例题
在这里插入图片描述
在这里插入图片描述
idx存的是指针

树与图的深度优先搜索

树的重心
在这里插入图片描述

每个节点都是一个单链表

模拟队列

hh = 0 , tt = -1

有向图的拓扑序列

在这里插入图片描述
都是从前指向后,即有向无环图(不能有环)
所有入度为0的点,都能排在前面的位置

在这里插入图片描述
删掉t->j的边,仅仅是j的入度减一,当j的入度为0的时候,放入队列

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e5 + 10;
int n , m ;
int e[N] , h[N] , ne[N] , idx;
int d[N] , q[N];
void add(int a , int b)
{e[idx] = b , ne[idx] = h[a] , h[a] = idx++;
}
bool topool()
{int hh = 0 , tt = -1 ;for(int i = 1;  i <= n ; i++)if(!d[i]) q[++tt] = i ;while(hh <= tt){int t = q[hh++];for(int i = h[t] ; i != -1 ; i = ne[i]){int j = e[i]; d[j] -- ;if(d[j] == 0) q[++tt] = j ;}}return tt == n - 1;
}
int main()
{cin >> n >> m ;memset(h , -1 , sizeof h) ;for(int i = 0 ; i < m ; i++){int x,y;cin >> x >> y;add(x,y);d[y]++;}if(topool()){for(int i = 0 ; i < n ; i++) cout << q[i] << " " ;}else cout << -1 ;return 0;
}

bellman-ford

有边数限制的最短路

spfa

spfa求最短路

spfa判断负环

Floyd

Floyd求最短路

Prim

Prim算法求最小生成树

Kruskal

Kruskal算法求最小生成树

染色法判定二分图

染色法判定二分图

相关文章:

搜索与图论(acwing算法基础)

文章目录 DFS排列数字n皇后 BFS走迷宫 拓扑序列单链表树与图的深度优先搜索模拟队列有向图的拓扑序列 bellman-ford有边数限制的最短路 spfaspfa求最短路spfa判断负环 FloydFloyd求最短路 PrimPrim算法求最小生成树 KruskalKruskal算法求最小生成树 染色法判定二分图染色法判定…...

【数据结构】何为数据结构。

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…...

【P57】JMeter 保存响应到文件(Save Responses to a file)

文章目录 一、保存响应到文件&#xff08;Save Responses to a file&#xff09;参数说明二、准备工作三、测试计划设计 一、保存响应到文件&#xff08;Save Responses to a file&#xff09;参数说明 可以将结果树保存到文件 使用场景&#xff1a;当结果太大&#xff0c;使…...

Visual Studio 2022 v17.6 正式发布

Visual Studio 17.6 正式发布&#xff0c;这个最新版本提供了一系列强大的工具和功能&#xff0c;旨在使你能够制作出最先进的应用程序。 提高生产力 通过 Visual Studio 2022&#xff0c;目标是帮助你在更短的时间内完成 IDE 内的所有开发任务&#xff0c;在这个版本中&…...

std::chrono时间处理

std::chrono是C11引入的标准库&#xff0c;用于时间的计算和处理。它按照ISO8601标准定义了多个时间类&#xff0c;例如&#xff1a;duration&#xff08;持续时间&#xff09;、time_point&#xff08;时间点&#xff09;和clock&#xff08;时钟&#xff09;。以下是一些常见…...

ieda codeformatV2.xml

ieda codeformatV2.xml 目录概述需求&#xff1a; 设计思路实现思路分析1.codeformatV22.codeformatV23.codeformatV24.codeformatV25.数据处理器 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…...

Hbase

java客户端 导入maven依赖 XML<dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>…...

[golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群

一.服务发现介绍 引入 上一节讲解了使用 gRPC创建微服务,客户端的一个接口可能需要调用 N个服务,而不同服务可能存在 不同的服务器,这时&#xff0c;客户端就必须知道所有服务的 网络位置&#xff08;ipport&#xff09;&#xff0c;来进行连接服务器操作,如下图所示: 以往的做…...

【数据结构】哈希应用

目录 一、位图 1、位图概念 2、位图实现 2.1、位图结构 2.2、比特位置1 2.3、比特位置0 2.4、检测位图中比特位 3、位图例题 3.1、找到只出现一次的整数 3.2、找到两个文件交集 3.3、找到出现次数不超过2次的所有整数 二、布隆过滤器 1、布隆过滤器提出 2、布隆过…...

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时&#xff0c;通过 wh…...

Android系统的Ashmem匿名共享内存子系统分析(5)- 实现共享的原理

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较…...

谈一谈冷门的C语言爬虫

C语言可以用来编写爬虫程序&#xff0c;但是相对于其他编程语言&#xff0c;C语言的爬虫开发可能会更加复杂和繁琐。因为C语言本身并没有提供现成的爬虫框架和库&#xff0c;需要自己编写网络请求、HTML解析等功能。 不过&#xff0c;如果你对C语言比较熟悉&#xff0c;也可以…...

基于状态的维护(CBM)如何推动设备效率提高?

基于状态的维护&#xff08;Condition-Based Maintenance&#xff0c;CBM&#xff09;是一种先进的维护策略&#xff0c;通过实时监测和分析设备的状态数据&#xff0c;预测设备故障并采取相应的维护措施。CBM基于数据驱动的方法&#xff0c;能够提高设备的可用性、降低维修成本…...

DC LAB8SDC约束四种时序路径分析

DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…...

学生考试作弊检测系统 yolov8

学生考试作弊检测系统采用yolov8网络模型人工智能技术&#xff0c;学生考试作弊检测系统过在考场中安装监控设备&#xff0c;对学生的作弊行为进行实时监测。当学生出现作弊行为时&#xff0c;学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…...

【基于容器的部署、扩展和管理】 3.2 基于容器的应用程序部署和升级

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程…...

Jmeter 实现 grpc服务 压测

一、Jmeter安装与配置 网上有很多安装与配置文章&#xff0c;在此不做赘述 二、Jmeter gRPC Request 插件安装 插件下载地址&#xff1a;JMeter Plugins :: JMeter-Plugins.org 将下载文件解压后放到Jmeter安装目录下 /lib/ext 然后在终端输入Jmeter即可打开 Jmeter GUI界面…...

深入源码分析RecyclerView缓存复用原理

文章目录 前言四级缓存 源码分析缓存一级缓存&#xff08;mChangedScrap和mChangedScrap&#xff09;二级缓存&#xff08;mCachedViews&#xff09;三级缓存&#xff08;ViewCacheExtension&#xff09;四级缓存&#xff08;mRecyclerPool&#xff09;缓存池mRecyclerPool结构…...

内网隧道代理技术(一)之内网隧道代理概述

内网隧道代理技术 内网转发 在渗透测试中&#xff0c;当我们获得了外网服务器&#xff08;如web服务器&#xff0c;ftp服务器&#xff0c;mali服务器等等&#xff09;的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段&#xff0c;一般情况…...

设计图形用户界面的原则

1) 一般性原则&#xff1a;界面要具有一致性、常用操作要有快捷方式、 提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可 逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息 显示方式与数据输入方式的协调一致 2) 颜色的使用&#xff1a;颜色…...

贾子科学三层结构定律(TMM):终结波普尔骗局,重塑科学真理主权的终极架构

贾子科学三层结构定律&#xff08;TMM&#xff09;&#xff1a;终结波普尔骗局&#xff0c;重塑科学真理主权的终极架构副标题&#xff1a; Truth–Model–Method Framework——从“方法僭越”到“真理回归”的科学划界革命摘要针对波普尔可证伪主义导致的真理虚无化与当代学术…...

仅限首批200名开发者获取:Java 25虚拟线程高并发架构迁移评估工具包(含代码扫描器+风险热力图+ROI预测模型)

第一章&#xff1a;Java 25虚拟线程高并发架构迁移全景认知Java 25正式将虚拟线程&#xff08;Virtual Threads&#xff09;从预览特性转为标准特性&#xff0c;标志着JVM并发模型进入轻量级、高密度、低开销的新纪元。虚拟线程基于Project Loom多年演进&#xff0c;以java.lan…...

毕业设计实战:基于SSM+Vue+MySQL的超市商品管理系统设计与实现指南

毕业设计实战&#xff1a;基于SSMVueMySQL的超市商品管理系统设计与实现指南 在开发“基于B/S的超市商品管理系统”毕业设计时&#xff0c;曾因采购进货表未通过商品ID、供应商ID与采购员工ID多外键关联踩过关键坑——初期仅设计进货编号、数量等基础字段&#xff0c;未与商品表…...

进程与线程的核心区别:一篇看懂,告别混淆

在编程学习中&#xff0c;尤其是接触 C 多线程、操作系统相关知识时&#xff0c;进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是两个绕不开的概念。很多新手会把二者混为一谈&#xff0c;甚至像之前我被问到的那样&#xff0c;疑惑“进程是不是线…...

在超大数据集下 DuckDB 与 MySQL 查询速度对比排

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

番茄小说下载器:5种格式批量下载与Web界面管理完全指南

番茄小说下载器&#xff1a;5种格式批量下载与Web界面管理完全指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 番茄小说下载器是一个功能强大的开源工具&#xff0c;专为小说爱好者和技…...

HarmonyOS 6学习:ArkUI Text组件的数字翻牌动效

在移动应用开发中&#xff0c;数字展示的动态效果一直是提升用户体验的关键环节。无论是金融应用中的余额变动、电商平台的库存更新&#xff0c;还是体育赛事的实时比分&#xff0c;数字的动态变化都能有效吸引用户注意力并传递信息价值。以往在HarmonyOS中实现这类效果&#x…...

AI时代编程,告别“手搓焦虑”,从敲码工到系统设计者的进化之路

作为一名计算机科学专业的学生&#xff0c;你正处在一个技术变革速度远超以往的时代。从曾经只能依靠手动逐行编写代码、反复调试排错的传统开发模式&#xff0c;到如今Cursor、OpenCode、Claude Code等AI编码工具遍地开花&#xff0c;再到智能Agent自动完成项目搭建、逻辑实现…...

Spring事务@Transactional失效的7大隐蔽陷阱与实战避坑指南

1. 代理机制失效的隐蔽陷阱 Spring事务管理的核心原理是通过动态代理实现的&#xff0c;但很多开发者并不清楚代理机制在哪些情况下会失效。最常见的问题就是同一个类中的方法内部调用。比如你在Service类中写了一个无事务的方法A&#xff0c;A内部调用了有Transactional注解的…...

如何提高邮件营销的投资回报率

在与大量客户的长期沟通中&#xff0c;我发现一个非常有趣的现象&#xff0c;即大家对邮件营销的投资回报率出现了两极分化的评价&#xff1a;一部分企业认为邮件营销的效果非常一般&#xff0c;发着发着就不发了&#xff1b;而另一部分企业认为&#xff0c;邮件营销的投资回报…...