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

关于拓扑排序

又重新学了一下拓扑排序,这次发现就十分简单了,拓扑排序的步骤

1.他必须是一个有向无环图,起点我们就是入度为0的点

2.我们首先要输出的就是入度为0的点,然后依次删除这些点连向的点,使这些点的入度-1,如果这些点入度此时变为了0,那么就放进刚才入度为0的集合当中

3.现在只需要输出这个集合就可以了

 

 

 

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=100010;
int e[N];
int ne[N];
int h[N];
int idx=0;
int hh=0,tt=-1;
int q[N];
int d[N]; 
void add1(int a,int b)
{e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void topsort()
{for(int i=1;i<=n;i++){if(d[i]==0)q[++tt]=i;}while(tt>=hh){int j=q[hh++];for(int i=h[j];i!=-1;i=ne[i]){int x=e[i];d[e[i]]--;if(d[e[i]]==0){q[++tt]=e[i];}}}if(tt==n-1){for(int i=0;i<n;i++){cout<<q[i]<<" ";}}else{cout<<"-1";}
}
int main()
{cin>>n>>m;memset(h,-1,sizeof(h));while(m--){int a,b;cin>>a>>b;d[b]++;add1(a,b);}topsort();return 0;
}

http://www.lryc.cn/news/106314.html

相关文章:

  • 【C++】开源:Boost库常用组件配置使用
  • 用python通过http实现文件传输,分为发送端和接收端
  • 数据结构--图的遍历 DFS
  • SpringBoot集成MyBatisPlus+MySQL(超详细)
  • 一边是计算机就业哀鸿遍野,一边是高考生疯狂涌向计算机专业
  • 解决外部主机无法访问Docker容器的方法
  • IDEA中修改类头的文档注释信息
  • 建模教程:如何利用3ds Max 和 After Effects 实现多通道渲染和后期合成
  • JPA之Hibernate
  • leetcode(力扣)剑指 Offer 16. 数值的整数次方 (快速幂)
  • git命令分类合集
  • 微信小程序打开地图的方法
  • 快手头部主播合体,二驴祁天道直播首秀销售额破亿
  • Golang Devops项目开发(1)
  • Django系列之DRF简单使用
  • 新闻标题文本分类任务
  • 自己实现MyBatis 底层机制--抽丝剥茧(上)
  • Django后端执行成功或失败状态码
  • Prometheus中的关键设计
  • Centos7 安装yum
  • 无涯教程-Lua - 简介
  • 【第一阶段】kotlin语言引用数据类型
  • BUU [网鼎杯 2020 朱雀组]phpweb
  • 使用WebMvcConfigurationSupport后导致原来返回的json数据变为了xml的解决方法
  • 如何判断一个枚举值是否存在(Check if an Enum Value Exists in Java)
  • 网工内推 | 网络安全工程师,最高15K,有高温补贴
  • Android—ADB命令
  • 音视频知识:MPEG-4、H264、MP4、AAC之间的关系
  • 智能门锁的无线通讯协议有哪些?主要特点是什么?
  • 机器学习——异常检测