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

acwing算法基础之搜索与图论--有向图的拓扑序列

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

拓扑序列:针对有向图而言,该序列内,所有边都是从前指向后的。

如果存在环,那么该图一定不存在拓扑序列。否则,一定存在拓扑序列。

有向图中的入度和出度。
入度为0的结点,可以作为拓扑序列的起点。

求拓扑序列的关键步骤:

  1. 把入度为0的结点插入队列q。
  2. 弹出队头t,遍历队头t的下一个结点,将其入度减1。操作之后,如果其值为0,则插入队列q。
  3. 重复进行步骤2,直至队列q为空。

2 模板

题目1:给出结点数目n和边数m,以及一系列的边,如果此图存在拓扑序列,请输出(输出任意一种拓扑序列即可);否则,输出-1。

#include <iostream>
#include <vector>
#include <queue>using namespace std;const int N = 1e5 + 10;
int n, m;
vector<vector<int>> g(N);
vector<int> d(N); //存储每个结点的入度int main() {cin >> n >> m;int x, y;while (m--) {cin >> x >> y;//添加x到y的边g[x].emplace_back(y);d[y]++;}queue<int> q;for (int i = 1; i <= n; ++i) {if (d[i] == 0) {q.push(i);}}vector<int> res;while (!q.empty()) {auto t = q.front();res.emplace_back(t); //存入向量res中 q.pop();//t可以走到哪里for (auto x : g[t]) {//把结点t删除d[x]--;if (d[x] == 0) {q.push(x);}}}if (res.size() == n) {for (int i = 0; i < n; ++i) cout << res[i] << ' ';cout << endl;} else {puts("-1");}return 0;
}

3 工程化

暂无。。。

相关文章:

acwing算法基础之搜索与图论--有向图的拓扑序列

目录 1 基础知识2 模板3 工程化 1 基础知识 拓扑序列&#xff1a;针对有向图而言&#xff0c;该序列内&#xff0c;所有边都是从前指向后的。 如果存在环&#xff0c;那么该图一定不存在拓扑序列。否则&#xff0c;一定存在拓扑序列。 有向图中的入度和出度。 入度为0的结点…...

Unity之NetCode多人网络游戏联机对战教程(7)--联机概念理解权威性Authority

文章目录 前言IsOwner权威 / AuthoritativeIsHostIsServerIsClientIsLocalPlayer 前言 在联机游戏中&#xff0c;常见的模式有Peer-to-Peer, Client与Server&#xff0c;也就是CS架构。NetCode基于CS架构开发&#xff0c;下面讲解一些概念知识。在NetCode中&#xff0c;会涉及…...

Go并发编程(上)

目录 一、go语言当中的协程 二、MPG模型介绍 三、Goroutine 的使用 3.1 协程的开启 3.2 优雅地等待子协程结束 四、捕获子协程的panic 五、管道Channel 5.1、认识管道 5.2、Channel的遍历和关闭 5.3 、用管道实现生产者消费者模型 5.4、Channel一些使用细节和注意事…...

MarkDown基础及表格、KaTeX公式、矩阵、流程图、UML图、甘特图语法

概述 最多可设置6级标题 技巧 列表 有序列表 MD语法&#xff1a; 1. 你好 2. 我也好呈现效果&#xff1a; 你好我也好 无序列表 MD语法&#xff1a; - a - b * aa * bbaaabbb效果&#xff1a; ab aabb aaabbb 结论&#xff0c;支持三种方式&#xff1a;-、*、 T…...

Citespace的使用

CiteSpace CiteSpace的相关介绍运行CiteSpace CiteSpace的相关介绍 CiteSpace作为一款优秀的文献计量学软件&#xff0c;能够将文献之间的关系以科学知识图谱的方式可视化地展现在我们面前。简单来说&#xff0c;面对海量的文献&#xff0c;CiteSpace能够迅速锁定自己需要关注…...

[模块]ES6与cjs的混合开发

[模块]ES6与cjs的混合开发 模块语言混合开发的原因Nodejs中使用ES6关于动态加载的讲解 项目的模块语言CJS 与 ESM 开发模块的使用方法普通模块引入json 文件的引入普通模块导出 CJS兼容ESMESM兼容CJS(推荐)全局变量--dirname-filename-esm库 问题Error: EPERM: operation not p…...

git上传项目至github(Linux)

01 git版本创建 git init 创建版本库 创建一个版本 git add test1.cpp git commit -m 说明信息 git log 查看版本记录 02 版本回退 git reset --hard HEAD^ 版本回退一个 git reset --hard HEAD^^ 版本回退二个 git reset --hard 版本号 版本回退到指定版本&#xff0…...

SSH 远程登录 WSL

更新ssh设置 sudo apt-get update sudo apt-get remove openssh-server sudo apt-get install openssh-server 编辑网络配置 sudo vi /etc/ssh/sshd_config &#xff08;1&#xff09;修改ssh服务监听端口和监听地址 注意&#xff1a;为了个人的安全&#xff0c;还是建议换…...

每天一道算法题:40. 组合总和 II

难度 中等 题目 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: candidat…...

Centos7安装PostgreSQL 14

环境&#xff1a; Centos7安装PostgreSQL_14版本数据库&#xff1b; 打开官方网站&#xff1a;PostgreSQL: Linux downloads (Red Hat family) 一、 版本选择 复制、粘贴并运行如下脚本&#xff1a; 二、安装步骤 这些命令是在 CentOS 7.x 系统上安装和配置 PostgreSQL 14 的步…...

Shopee的折扣活动怎么分类?shopee设置折扣注意事项

旺季到来&#xff0c;Shopee会举办一些折扣活动来吸引客户&#xff0c;那么shopee的折扣活动怎么分类&#xff0c;shopee设置折扣注意事项&#xff1f; shopee的折扣活动怎么分类&#xff1f; 满减活动&#xff1a;满减活动是虾皮常见的一种折扣形式。在这种活动中&#xff0…...

磁盘空间占用巨大的meta.db-wal文件缓存(tracker-miner-fs索引服务)彻底清除办法

磁盘命令参考本博客linux磁盘空间满了怎么办. 问题: 磁盘空间被盗 今天瞄了一下我的Ubuntu系统盘&#xff0c; nftdiggernftdigger-Ubuntu:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 1.9…...

力扣:160. 相交链表(Python3)

题目&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;…...

【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)题目描述解题思路Java题解代码代码OJ评判结果代码讲解寄语【华为OD机…...

ant 任务(task)通过内嵌的arg元素传递命令行参数

有的ant 任务将参数传递给其它的进程作为命令行参数。这可以通过内嵌的arg元素来实现。 例如&#xff1a; <exec executable"${browser}" spawn"true"><arg value"${file}"/> </exec>arg元素的部分属性说明&#xff1a; val…...

STM32G0+EMW3080+阿里云飞燕平台实现单片机WiFi智能联网功能(三)STM32G0控制EMW3080实现IoT功能

项目描述&#xff1a;该系列记录了STM32G0EMW3080实现单片机智能联网功能项目的从零开始一步步的实现过程&#xff1b;硬件环境&#xff1a;单片机为STM32G030C8T6&#xff1b;物联网模块为EMW3080V2-P&#xff1b;网联网模块的开发板为MXKit开发套件&#xff0c;具体型号为XCH…...

IntelliJ IDEA - Git Commit 后 Commit 窗口不消失解决方案

这个现象是在 2023 年版本后开始的&#xff0c;一开始以为是 Mac 系统的原因&#xff0c;后来发现原来 Windows 也这样&#xff0c;所以应该只跟 IDEA 版本有关 可以看到左侧 commit 后&#xff0c;这个侧边栏还在&#xff0c;按理讲在以前的版本是之前消失&#xff0c;这样使…...

Vue 组件化编程 和 生命周期

目录 一、组件化编程 1.基本介绍 : 2.原理示意图 : 3.全局组件示例 : 4.局部组件示例 : 5.全局组件和局部组件的区别 : 二、生命周期 1.基本介绍 : 2.生命周期示意图 : 3.实例测试 : 一、组件化编程 1.基本介绍 : (1) 开发大型应用的时候&#xff0c;页面往往划分成…...

《数字图像处理-OpenCV/Python》连载(41)图像的旋转

《数字图像处理-OpenCV/Python》连载&#xff08;41&#xff09;图像的旋转 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 6 章 图像的几何变换 几何变换分…...

案例 - 拖拽上传文件,生成缩略图

直接看效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>拖拽上传文件</title>&l…...

Vue H5移动端应用集成NFC读取功能的实战解析

1. 为什么要在Vue H5应用中集成NFC功能&#xff1f; 最近两年&#xff0c;越来越多的线下场景开始使用NFC技术。比如商场里的智能货架、博物馆的电子讲解牌、会议签到系统等等。作为一个Vue开发者&#xff0c;我发现很多客户都希望在他们的H5应用中加入NFC读取功能&#xff0c…...

深度解析虚幻引擎Pak文件:5个实战技巧掌握UnrealPakViewer高效使用

深度解析虚幻引擎Pak文件&#xff1a;5个实战技巧掌握UnrealPakViewer高效使用 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具&#xff0c;支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer UnrealPakViewer是一…...

AI编程提效的真实瓶颈:不是工具不行,是需求没说清楚

最近参加公司内部的AI交流会&#xff0c;散场后和几个同事聊起来&#xff0c;发现一个很有意思的现象&#xff1a;大家都在用AI编程工具&#xff0c;有人用Cursor&#xff0c;有人用Claude Code&#xff0c;有人用GitHub Copilot&#xff0c;但提效的感受差异很大。有人说「已经…...

python读取excel数据的详细教学

在Python中读取Excel数据是一个常见的数据处理任务。通过pandas库&#xff0c;你可以轻松地读取、分析和操作Excel文件。以下是如何使用Python读取Excel数据的详细讲解。一、准备工作在开始之前&#xff0c;确保已安装pandas库以及Excel文件处理的依赖库openpyxl。你可以使用以…...

京东抢购神器JDspyder:3步实现自动化秒杀,告别手动抢购烦恼

京东抢购神器JDspyder&#xff1a;3步实现自动化秒杀&#xff0c;告别手动抢购烦恼 【免费下载链接】JDspyder 京东预约&抢购脚本&#xff0c;可以自定义商品链接 项目地址: https://gitcode.com/gh_mirrors/jd/JDspyder 还在为抢不到心仪商品而烦恼吗&#xff1f;J…...

Qwen3-VL-2B-Instruct保姆级教程:零基础部署图文模型

Qwen3-VL-2B-Instruct保姆级教程&#xff1a;零基础部署图文模型 1. 环境准备与快速部署 想要体验AI看图说话的神奇能力吗&#xff1f;Qwen3-VL-2B-Instruct让你不用写代码就能搭建自己的视觉理解机器人。这个教程会手把手带你从零开始&#xff0c;就算完全没技术背景也能轻松…...

开源镜像gemma-3-12b-it一文吃透:许可证合规使用与商业授权边界说明

开源镜像gemma-3-12b-it一文吃透&#xff1a;许可证合规使用与商业授权边界说明 1. Gemma-3-12b-it模型概述 Gemma-3-12b-it是Google推出的开源多模态大模型&#xff0c;基于Gemini模型的相同技术架构构建。这个12B参数规模的模型专门针对指令调优进行了优化&#xff0c;能够…...

从仿真到实战:如何用MATLAB生成的白光干涉信号验证你的测量算法?

从仿真到实战&#xff1a;MATLAB白光干涉信号生成与算法验证全流程指南 在光学测量领域&#xff0c;白光干涉技术因其独特的优势成为表面形貌检测、薄膜厚度测量等精密工程应用的核心手段。然而&#xff0c;实际系统开发中最令人头疼的环节往往不是硬件搭建&#xff0c;而是测量…...

微信支付JSAPI报错排查指南:从‘total_fee’到云函数unifiedOrder的完整配置流程

微信支付JSAPI全链路调试手册&#xff1a;从参数校验到云函数协同的深度解析 第一次在小程序里集成微信支付时&#xff0c;那个红色的报错弹窗"调用支付JSAPI缺少参数&#xff1a;total_fee"让我盯着屏幕发呆了十分钟。明明已经按照文档把参数都传了&#xff0c;为什…...

5分钟快速上手!用PptxGenJS实现JavaScript自动化生成专业PPT的完整指南

5分钟快速上手&#xff01;用PptxGenJS实现JavaScript自动化生成专业PPT的完整指南 【免费下载链接】PptxGenJS Build PowerPoint presentations with JavaScript. Works with Node, React, web browsers, and more. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS …...