算法模板 7.拓扑排序

拓扑排序

用来解决循环依赖相关问题!!!

一个有向无环图一定存在一个拓扑序列!一定存在至少一个入度为0的点

有向无环图也被称作拓扑图

先把入度为0的点压入队列,然后进行广度优先搜索(找到队头,弹出队头,对队头能够访问的边进行广搜),并且把对应的边剪掉(入度-1),再进行一次入度为0 的点搜索(判断该点是否入度为0)

再次压入队列。这样的一次维护队列的过程,就完成了拓扑序的维护。每次弹出队头,要把队头进行存储。
在这里插入图片描述

848. 有向图的拓扑序列 - AcWing题库

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, m;
int in[N];

int main()
{
    cin >> n >> m;
    vector<vector<int>> g(n + 1);
    while(m--){
        int x, y;
        cin >> x >> y;
        g[x].push_back(y); // 建图
        in[y]++; // 统计入度
    }
    queue<int> q;
    for(int i = 1; i <= n; i++) {
        if(in[i] == 0) q.push(i); // 把入度为0的点入队
    }
    vector<int> res;
    while(q.size()){
        int nq = q.size();
        for(int i = 0; i < nq; i++){
            auto t = q.front();
            q.pop();
            res.push_back(t); // 把队头放入答案
            for(auto x:g[t]){
                in[x]--; // 邻边入度减一
                if(in[x] == 0) q.push(x); // 如果此时入度为0,则入队
            }
        }
    }
    if(res.size() != n) puts("-1");
    else{
        for(auto x:res) cout << x << ' ';
    }
    return 0;    
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

遥感影像数据处理分析软件与ChatGPT集成、多光谱数据分析与实践、高光谱数据分析与实践

目录 第一章 遥感科学与AI基础 第二章 遥感影像数据处理分析软件与ChatGPT集成 第三章 多光谱数据分析与实践专题 第四章 高光谱分析与实践专题 更多应用 将最新的人工智能技术与实际的遥感应用相结合&#xff0c;提供不仅是理论上的&#xff0c;而且是适用和可靠的工具和…

【天锐绿盾】| 数据防泄漏软件——防止公司核心文件数据\资料外泄、泄露!

数据防泄漏软件 数据防泄漏&#xff08;DLP&#xff09;软件是一种专门设计用于保护企业和组织内部敏感信息的网络安全工具。 PC端&#xff1a;https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 它们通常包含以下核心功能&#xff1a; 文件加密…

2、windows环境下vscode开发c/c++环境配置(一)

前言&#xff1a;VSCode是微软出的一款轻量级编辑器&#xff0c;它本身只是一款文本编辑器而已&#xff0c;并不是一个集成开发环境(IDE)&#xff0c;几乎所有功能都是以插件扩展的形式所存在的。因此&#xff0c;我们想用它编程&#xff0c;不只是把vscode下载下来就行&#x…

C语言系列(所需基础:大学C语言及格)-3-字符串/ASCII码表

文章目录 一、字符串二、ASCII码表 一、字符串 用" "来定义字符串&#xff1a; #include <stdio.h>int main() {"";//空字符串"hkl";//由""定义的字符串return(0); }用数组来存储字符串&#xff0c;并打印&#xff1a; #incl…

深度学习系列——“试错”发展直觉

试错法以发展直觉&#xff1a;面对复杂的深度学习问题时&#xff0c;学习者可以通过不断尝试不同解决方案&#xff0c;并观察其对模型性能的影响&#xff0c;逐渐形成一套针对特定任务的有效策略。这些经验有助于提升对深度学习模型工作原理的直观理解。 那么试错法是如何发展直…

专修戴尔R730xd服务器闪电灯 心跳亮黄灯故障

2024年开年第二天接到一个用户反馈说他公司有一台DELL PowerEdge R730xd服务器春节前由于市电问题意外断电关机了&#xff0c;刚好碰上春节就没去开机了&#xff0c;今天工厂开工服务器通电发现开不了机&#xff0c;且机器过了一会后报了2个黄灯错误&#xff0c;如下图&#xf…

SpringCloud-基于Feign远程调用

Spring Cloud 是一个用于构建分布式系统的开发工具包&#xff0c;它提供了一系列的微服务组件&#xff0c;其中之一就是 Feign。Feign 是一种声明式的 Web 服务客户端&#xff0c;它简化了在 Spring Cloud 中进行远程调用的过程。本文将介绍如何在 Spring Cloud 中使用 Feign 进…

这里有几个0?

注意n最大取 #include<iostream> #define endl \n using namespace std; void solve(long long x) {int cnt 0, sum 0;while (x) {cnt x & 1;sum;x >> 1;}cout << sum-cnt << endl; } int main() {int t;long long n;cin >> t;while (t-…

【力扣白嫖日记】1890.2020年最后一次登录

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1890.2020年最后一次登录 表&#xff1a;Logins 列名类型user_idinttime_stampvarchar (user_id, time_sta…

智能计算: 最新进展、挑战和未来(九名院士、12位专家)

论文&#xff1a;Intelligent Computing: The Latest Advances, Challenges, and Future 论文地址&#xff1a;https://arxiv.org/abs/2211.11281 Abstract 计算是人类文明发展的一个重要推动力。近年来&#xff0c;我们见证了智能计算的出现&#xff0c;在大数据、人工智能和物…

【FastAPI】P3 请求与响应

目录 请求路径参数查询参数 响应JSON 响应文本响应返回 Pydantic 模型 在网络通讯中&#xff0c;请求&#xff08;Request&#xff09; 与 响应&#xff08;Response&#xff09; 扮演着至关重要的角色&#xff0c;它们构成了客户端与服务器间互动的根本理念。 请求&#xff0…

原创java开源项目发布maven全球中央仓库详细过程示范和遇到的问题解决办法

文章目录 java项目上传到maven全球中央仓库&#xff08;原创个人开源项目发布maven中央仓库详细过程示范&#xff09;需求背景第一步 注册sonatype账号第二步 登录sonatype账号并申请新建项目第三步 准备个人GPG数字签名并发布到ubuntu第四步 准备maven配置第五步 修改项目配置…

网络原理HTTP/HTTPS(2)

文章目录 HTTP响应状态码200 OK3xx 表示重定向4xx5xx状态码小结 HTTPSHTTPS的加密对称加密非对称加密 HTTP响应状态码 状态码表⽰访问⼀个⻚⾯的结果.(是访问成功,还是失败,还是其他的⼀些情况…).以下为常见的状态码. 200 OK 这是⼀个最常⻅的状态码,表⽰访问成功 2xx都表示…

hot100 -- 滑动窗口

目录 &#x1f33c;无重复字符 -- 最长子串 AC 滑动窗口&#xff08;桶&#xff09; &#x1f33c;所有字母异位词 AC 滑动窗口 桶 AC 滑动窗口&#xff08;优化&#xff09; &#x1f33c;无重复字符 -- 最长子串 一开始考虑用 BF暴力 或者 KMP 的&#xff0c;后来想…

安宝特AR汽车行业解决方案系列1-远程培训

在汽车行业中&#xff0c;AR技术的应用正悄然改变着整个产业链的运作方式&#xff0c;应用涵盖培训、汽修、汽车售后、PDI交付、质检以及汽车装配等&#xff0c;AR技术为多个环节都带来了前所未有的便利与效率提升。 安宝特AR将以系列推文的形式为读者逐一介绍在汽车行业中安宝…

【机器学习笔记】 15 机器学习项目流程

机器学习的一般步骤 数据清洗 数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序&#xff0c;包括检查数据一致性&#xff0c;处理无效值和缺失值等。与问卷审核不同&#xff0c;录入后的数据清理一般是由计算机而不是人工完成。 探索性数据分析(EDA 探索性数据…

PROBIS铂思金融破产后续:ASIC牌照已注销

2024年1月31日&#xff0c;PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产&#xff0c;澳大利亚金融服务牌照遭暂停》&#xff0c;这也就意味着&#xff0c;PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是&#xff0c;时至今日…

com.alibaba.fastjson.JSONException: toJSON error的原因

问题&#xff1a; 导出接口报错&#xff0c;显示json格式化异常 发现问题&#xff1a; 第一个参数为HttpResponse,转换成json的时候报错 修改方法&#xff1a; 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…

解决NPM安装依赖包卡住的问题

引言 最近研究前端的一些技术点&#xff0c;在使用npm安装依赖包的时候发现会卡住&#xff0c;时间超时后会报如下错误 npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/babel/parser/download/babel/…

国际语言代码 Language Code 对照表速查

前言 语言代码是英国教育社会学家伯恩斯坦的术语。指在一定的语言集团中&#xff0c;特定的人群在特定的社会环境下使用的特定的言语。分为限定代码&#xff08;restricted code&#xff09;和精制代码&#xff08;elaborated code&#xff09;。语言代码是由字母或数字组成的…