Acwing 848.有向图的拓扑序列

news2024/11/15 15:37:44

Acwing 848.有向图的拓扑序列

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

image-20230710194138862

/*
啥是拓扑排序?
首先要满足有向无环图的条件
一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。
一直进行上面出处理,如果所有点都能被删掉,则这个图可以进行拓扑排序
题解:
bfs 将入度为0的节点加入队列 然后假设删除此节点
更改其他点的入度数 重复以上操作
如果出现环路bfs会提前结束 那么久可以判断是否所有节点都被加入过队列就行了

队列的出队顺序就是拓扑序列

*/
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>

using namespace std;

const int N = 1e5+100;
int e[N],h[N],ne[N],idx;
int d[N];//保存点的入度数
int n,m;
int ans[N];
int cnt;

void add(int a,int b){
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}

void topsort(){
    queue<int >que;
    for(int i=1;i<=n;i++){
        if(!d[i]){
            que.push(i);
            ans[++cnt] = i;
        }
    }
    while(!que.empty()){
        int t = que.front();
        // cout<<t<<endl;
        que.pop();
        for(int i = h[t];i!=-1;i=ne[i]){
            d[e[i]]--;
            if(!d[e[i]]){//入度的个数 也可以保证不会有重复的点加入队列 因为当这个点被加入到队列 就可以保证d[e[i]为0
                que.push(e[i]);
                ans[++cnt] = e[i];
            }
        }
    }
    if(n == cnt){
        for(int i=1;i<=cnt;i++){
            cout<<ans[i]<<" ";
        }
    }else{
        cout<<-1;
    }
    cout<<endl;
}
int main()
{
    cin>>n>>m;
    memset(h,-1,sizeof h);
    for(int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        add(a,b);
        d[b]++;
    }
    topsort();
    return 0;
}

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

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

相关文章

一个合格的测试人员需要具备迅速的反馈力

01 反馈指的是&#xff1a;在信息的传播中&#xff0c;接受者对传播者发出信息的反映。反馈得很重要一个属性就是时间滞延。在测试活动中&#xff0c;笔者经常会团队的测试人员一个问题&#xff1a;开发提交了一段代码后&#xff0c;多久能收到质量反馈&#xff1f;是按天&…

腾讯云轻量应用服务器性能测评一下,感觉还行吧

腾讯云轻量应用服务器性能如何&#xff1f;轻量服务器CPU内存带宽配置高&#xff0c;CPU采用什么型号主频多少&#xff1f;轻量应用服务器会不会比云服务器CVM性能差&#xff1f;腾讯云服务器网详解CPU型号主频、内存、公网带宽和系统盘存储多维对比&#xff0c;相对于CVM云服务…

Vue电商项目--登录与注册

登录注册静态组件 刚刚报了一个错误&#xff0c;找不到图片的资源 assets文件夹--放置全部组件共用静态资源 在样式当中也可以使用符号【src别名】。切记在前面加上 注册业务上 先修改原先的接口成这个按钮 然后把input框里面的数据保存到data中 注册业务下 就是点击获…

渠道归因(三)基于Shapley Value的渠道归因

渠道归因&#xff08;三&#xff09;基于Shapley Value的渠道归因 通过Shapley Value可以计算每个渠道的贡献权重&#xff0c;而且沙普利值的计算只需要参加的渠道总数&#xff0c;不考虑顺序&#xff0c;因此计算成本也较低。 传统的shapeley value import itertools from …

2.带你入门matlab数理统计常见分布的概率密度函数(matlab程序)

1.简述 计算概率分布律及密度函数值 matlab直接提供了通用的计算概率密度函数值的函数&#xff0c;它们是pdf 和namepdf函数&#xff0c;使用方式如下&#xff1a; Ypdf(‘name’&#xff0c;K&#xff0c;A&#xff0c;B)或者&#xff1a;namepdf (K&#xff0c;A&#xff0c;…

低代码平台之流程自动化测试

随着低代码平台的快速发展&#xff0c;开发人员可以便捷、快速地开发流程应用程序&#xff0c;由于业务流程的复杂化和业务需求的不断变化&#xff0c;对业务流程进行优化和改进将更加频繁&#xff0c;在这个过程中&#xff0c;就要求企业的流程测试的效率和质量需要跟上低代码…

Stable Diffusion - AWPortrait 1.1 模型与 Prompts 设置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131565908 AWPortrait 1.1 网址&#xff1a;https://www.liblibai.com/modelinfo/721fa2d298b262d7c08f0337ebfe58f8 介绍&#xff1a;AWPortrai…

java类的静态变量

java类的静态变量称为类变量&#xff0c;非静态变量称为实例变量。 静态变量可以在声明时初始化&#xff0c;也可以不在声明时初始化。 通过下面方式可以访问类的静态变量&#xff1a; 类内部直接访问静态变量&#xff1b;通过类名访问静态变量&#xff1b;通过实例访问静态变…

C++数据结构X篇_08_C++实现栈的顺序存储与链式存储

本篇参考C实现栈的顺序存储与链式存储整理&#xff0c;先搞懂结构框架&#xff0c;后期根据视频利用c对内容实现&#xff0c;也可以对c有更高的提升。 文章目录 1. 栈的顺序存储2. 栈的链式存储 栈是一种特殊的数据结构&#xff0c;栈中数据先进后出&#xff0c;且栈中数据只能…

30张图带你弄懂 二叉树、AVL、红黑树,他们之间有什么联系,AVL树和红黑树如何平衡

树&#xff08;Tree&#xff09;是若干个结点组成的有限集合&#xff0c;其中必须有一个结点是根结点&#xff0c;其余结点划分为若干个互不相交的集合&#xff0c;每一个集合还是一棵树&#xff0c;但被称为根的子树。注意&#xff0c;当树的结点个数为0时&#xff0c;我们称这…

[已解决]Running setup.py install for MinkowskiEngine ... error

虚拟环境中安装MinkowskiEngine&#xff1a; pip install -U MinkowskiEngine --install-option"--blasopenblas" -v --no-deps 报错&#xff1a;“Running setup.py install for MinkowskiEngine ... error” 解决办法[链接][参考1]&#xff1a; &#xff08;1&…

Unity 编辑器-创建模板脚本,并自动绑定属性,添加点击事件

当使用框架开发时&#xff0c;Prefab挂载的很多脚本都有固定的格式。从Unity的基础模板创建cs文件&#xff0c;再修改到应有的模板&#xff0c;会浪费一些时间。尤其是有大量的不同界面时&#xff0c;每个都改一遍&#xff0c;浪费时间不说&#xff0c;还有可能遗漏或错改。写个…

查询直播频道发起的签到记录

接口描述 1、通过直播场次id&#xff0c;查询签到发起记录 2、接口支持https协议 接口URL http://api.polyv.net/live/v3/channel/chat/checkin-by-sessionId 请求方式 GET 请求参数描述 参数名必选类型说明appIdtrueString账号appIdtimestamptrueLong当前13位毫秒级时间戳&…

OSPF实验2

OSPF实验2 要求&#xff1a; 1.如图连接&#xff0c;合理规划IP地址&#xff0c;所有路由器各自创建一个loopback接口 2.R1再创建三个接口IP地址为201.1.1.1/24、201.1.2.1/24、201.1.3.1/24 R5再创建三个接口IP地址为202.1.1.1/24、202.1.2.1/24、202.1.3.1/24 R7再创建三…

小红书如何开店,送你一份保姆级开店教程

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 今天&#xff0c;我们来谈谈小红书的电子商务。这也是今年非常流行的电子商务平台。很多人说…

《设计模式》责任链模式

《设计模式》责任链模式 定义&#xff1a; 责任链模式将链中每一个节点都看成一个对象&#xff0c;并且将这些节点对象连成一条链&#xff0c;请求会沿着这条链进行传递&#xff0c;直到有对象处理它为止&#xff0c;这使得多个对象都有机会接收请求&#xff0c;避免了请求发送…

warp框架教程3-path, method和自定义请求方法

path, method和自定义请求方法 path 是 warp 中的路由系统, 一个 web 框架的灵魂所在, 一个优美的路由系统可以给我们带来非常良好的使用体验, 而 warp 的路由体验本身就是非常 nice 的。在本文中将展示一个 RESTful 风格的 API 设计。下面先来学习一下 path 模块。 path 模块…

从小白到大神之路之学习运维第56天--------shell脚本实例应用2.0之有趣的知识

第三阶段基础 时 间&#xff1a;2023年7月10日 参加人&#xff1a;全班人员 内 容&#xff1a; shell实例 目录 shell脚本应用&#xff1a; 一、if判断 1、if判断的类型 1&#xff09;单分支 2&#xff09;双分支 3&#xff09;多分支 2、单分支if判断 1&#x…

Could not increase number of max_open_files to more than 5000 (request: 65535)

修改MySQL 打开文件数量限制 修改内核限制 ulimit -n //查看系统限制 修改 /etc/security/limits.conf 添加 soft nofile 65530hard nofile 65535 mysql> SHOW VARIABLES LIKE open_files_limit; 通过 MySQL 命令行检查新限制。您可以使用以下查询&#xff0c;确保设置了新…

vue3使用less入门使用案例(webStrom)

文章目录 简介安装less基础代码效果 less进阶代码效果 简介 less&#xff1a;css预处理语言 安装 npm i less3.0.4 -Dless打包解释器 npm i less-loader5.0.0 -Dless基础代码 <template><div class"a"></div> </template><style lang…