拓扑排序的实现条件,以及结合应用场景,我们都能得到拓扑排序适用于DAG图(Directed Acyclic Graph简称DAG)有向无环图, 根据关系我们能得到一个线性序列,实现的方式是DFS,具体的实现原理,我们将在下一篇博客中讲解。

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100+10;
int n,m;
vector<int> G[maxn];//G[i]表示i节点所指向的所有其他点
int in[maxn];//节点入度
bool topo()//判断该图是否可拓扑排序
{queue<int> Q;int sum=0;//记录可拆解的点数目for(int i=0;i<n;i++)if(in[i]==0)Q.push(i);while(!Q.empty()){int u=Q.front(); Q.pop();sum++;for(int i=0;i<G[u].size();i++){int v=G[u][i];if(--in[v]==0) Q.push(v);}}return sum==n;//可完全拓扑
}
int main()
{while(scanf("%d%d",&n,&m)==2&&n){memset(in,0,sizeof(in));for(int i=0;i<n;i++) G[i].clear();for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);G[u].push_back(v);in[v]++;}printf("%s\n",topo()?"YES":"NO");}return 0;
}

图论--拓扑排序--判断一个图能否被拓扑排序相关推荐

  1. (HDU4324)判断一个图中是否存在两点的出度相同

    题目:Triangle LOVE 因为每两个点一定有且仅有一条指向边,那么先假定点按顺序1,2,....n,每个点一定指向后面的点,即1指向2,3,4.....n,2指向3,4,5....n..... ...

  2. 判断一个图是否为树(有向图以及无向图)

    整理的算法模板合集: ACM模板 目录 判断一个图是否为树 1. 无向图(hdu 1272 小希的迷宫) 2. 有向图(hdu 1325 Is It A Tree?) 判断一个图是否为树 1. 无向图 ...

  3. 判断图有无环_【转】判断一个图是否有环 无向图 有向图

    无向图: 法1: 如果存在回路,则必存在一个子图,是一个环路.环路中所有顶点的度>=2. n算法: 第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一. 第二 ...

  4. 判断一个图是否有环(有向图,无向图)

    无向图: 法1: 如果存在回路,则必存在一个子图,是一个环路.环路中所有顶点的度>=2. n算法:   中 第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一 ...

  5. c语言 判断一个图是否全连通_【连载】(判断执行语句)乐创DIY C语言讲义——3.8节(2)...

    2 判断执行语句 判断执行语句,执行时候会有一个条件判断,一旦当条件判断为真,即True的时候,就执行相应的语句,满足条件被执行的语句用大括号"{}"括起来.由于在C语言中没有用于 ...

  6. 数据结构实验之图论十:判断给定图是否存在合法拓扑序列

    Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列. Input 输入包含多组,每组格式如下. 第一行包含两个整数n,m,分别代表该有向图的顶点数和边数.(n<=10 ...

  7. c语言 判断一个图是否全连通_C语言:程序运行流程图与顺序结构语句

    程序运行流程图 流程图是描述问题处理步骤的一种常用图形工具,它是由一些图框和流程线组成的.流程图描述问题的处理步骤,形象直观,便于阅读.画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如下 ...

  8. c语言 判断一个图是否全连通_基于云平台的全链路大规模网络连通性检测系统详解...

    虚拟网络排查问题困难,传统的traceroute等工具很难起到太大作用,大部分情况下都需要到宿主机.混合云网关上抓包来troubleshooting,耗时又费力.有些场景中包的传送路径比较长(如跨域. ...

  9. 判断一个图中有无环路的存在

    这里要引入两个概念: 1.树边:是一条未被遍历过的边,它指向一个未被访问过的点. 2.反向边:是一条未被遍历过的边,它指向一个被访问过的点. 如果图中有环路的存在,那么环路的最后一个边必然是一条反向边 ...

最新文章

  1. 一种注册表沙箱的思路、实现——研究Reactos中注册表函数的实现4
  2. 受显微镜下线虫启发,MIT人工智能实验室推出“液态”神经网络
  3. 我不捐了!日本前首富孙正义欲提供肺炎检测试剂遭网友攻击:被骂到放弃
  4. 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)
  5. Python之抖音快手代码舞--字符舞
  6. vue 手机号正则表达式
  7. Android 8.1user版本默认开启开发者模式
  8. 生物化学复习题I·蛋白质
  9. Houdini17 OptiX Denoise使用
  10. 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
  11. 360wifi架设文件服务器,360wifi怎么搭建局域网共享平台
  12. Verilog中always与assign详解
  13. excel怎么启用宏_怎么使用Excel制作条形码?操作如此简单
  14. 真正的高手,都在刻意练习
  15. C/C++《数据结构课程设计》任务书[2022-12-27]
  16. linux 查看内存 udimm rdimm,服务器UDIMM、LRDIMM、RDIMM三种内存如何区别
  17. thinkadmin关联查询
  18. 面试题:十瓶牛奶每天至少喝一瓶,直到喝完到底有多少种喝法
  19. Quartz框架介绍
  20. 普通磨削、超声辅助磨削表面形貌代码及表面轮廓提取

热门文章

  1. Android开发之Java和Calendar日期上一年,上一个月,前一天,前一周的方法
  2. jsp获取java数组长度_数组 – 如何在java jsp中获取数组列表大小?
  3. vue打包的app如何设置自动清理软件缓存_使用Webpack启动你的Vue.js应用
  4. php防止恶意充值,php防止恶意刷新与刷票的方法
  5. 《Android UI基础教程》——2.1节创建一个应用
  6. 1.JasperReports学习笔记1-了解JasperReports
  7. iPhone在华智能机市场份额首次下滑
  8. 使用Androidkiller编译APK文件时出现libpng error: Not a PNG file的错误
  9. 当maven引用的jar在maven库中下载不到源代码
  10. uniapp返回上一页_一例万级写入并发,百亿级数据,毫秒级返回架构分享