图论--拓扑排序--判断一个图能否被拓扑排序
拓扑排序的实现条件,以及结合应用场景,我们都能得到拓扑排序适用于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;
}
图论--拓扑排序--判断一个图能否被拓扑排序相关推荐
- (HDU4324)判断一个图中是否存在两点的出度相同
题目:Triangle LOVE 因为每两个点一定有且仅有一条指向边,那么先假定点按顺序1,2,....n,每个点一定指向后面的点,即1指向2,3,4.....n,2指向3,4,5....n..... ...
- 判断一个图是否为树(有向图以及无向图)
整理的算法模板合集: ACM模板 目录 判断一个图是否为树 1. 无向图(hdu 1272 小希的迷宫) 2. 有向图(hdu 1325 Is It A Tree?) 判断一个图是否为树 1. 无向图 ...
- 判断图有无环_【转】判断一个图是否有环 无向图 有向图
无向图: 法1: 如果存在回路,则必存在一个子图,是一个环路.环路中所有顶点的度>=2. n算法: 第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一. 第二 ...
- 判断一个图是否有环(有向图,无向图)
无向图: 法1: 如果存在回路,则必存在一个子图,是一个环路.环路中所有顶点的度>=2. n算法: 中 第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一 ...
- c语言 判断一个图是否全连通_【连载】(判断执行语句)乐创DIY C语言讲义——3.8节(2)...
2 判断执行语句 判断执行语句,执行时候会有一个条件判断,一旦当条件判断为真,即True的时候,就执行相应的语句,满足条件被执行的语句用大括号"{}"括起来.由于在C语言中没有用于 ...
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列. Input 输入包含多组,每组格式如下. 第一行包含两个整数n,m,分别代表该有向图的顶点数和边数.(n<=10 ...
- c语言 判断一个图是否全连通_C语言:程序运行流程图与顺序结构语句
程序运行流程图 流程图是描述问题处理步骤的一种常用图形工具,它是由一些图框和流程线组成的.流程图描述问题的处理步骤,形象直观,便于阅读.画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如下 ...
- c语言 判断一个图是否全连通_基于云平台的全链路大规模网络连通性检测系统详解...
虚拟网络排查问题困难,传统的traceroute等工具很难起到太大作用,大部分情况下都需要到宿主机.混合云网关上抓包来troubleshooting,耗时又费力.有些场景中包的传送路径比较长(如跨域. ...
- 判断一个图中有无环路的存在
这里要引入两个概念: 1.树边:是一条未被遍历过的边,它指向一个未被访问过的点. 2.反向边:是一条未被遍历过的边,它指向一个被访问过的点. 如果图中有环路的存在,那么环路的最后一个边必然是一条反向边 ...
最新文章
- 一种注册表沙箱的思路、实现——研究Reactos中注册表函数的实现4
- 受显微镜下线虫启发,MIT人工智能实验室推出“液态”神经网络
- 我不捐了!日本前首富孙正义欲提供肺炎检测试剂遭网友攻击:被骂到放弃
- 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)
- Python之抖音快手代码舞--字符舞
- vue 手机号正则表达式
- Android 8.1user版本默认开启开发者模式
- 生物化学复习题I·蛋白质
- Houdini17 OptiX Denoise使用
- 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
- 360wifi架设文件服务器,360wifi怎么搭建局域网共享平台
- Verilog中always与assign详解
- excel怎么启用宏_怎么使用Excel制作条形码?操作如此简单
- 真正的高手,都在刻意练习
- C/C++《数据结构课程设计》任务书[2022-12-27]
- linux 查看内存 udimm rdimm,服务器UDIMM、LRDIMM、RDIMM三种内存如何区别
- thinkadmin关联查询
- 面试题:十瓶牛奶每天至少喝一瓶,直到喝完到底有多少种喝法
- Quartz框架介绍
- 普通磨削、超声辅助磨削表面形貌代码及表面轮廓提取
热门文章
- Android开发之Java和Calendar日期上一年,上一个月,前一天,前一周的方法
- jsp获取java数组长度_数组 – 如何在java jsp中获取数组列表大小?
- vue打包的app如何设置自动清理软件缓存_使用Webpack启动你的Vue.js应用
- php防止恶意充值,php防止恶意刷新与刷票的方法
- 《Android UI基础教程》——2.1节创建一个应用
- 1.JasperReports学习笔记1-了解JasperReports
- iPhone在华智能机市场份额首次下滑
- 使用Androidkiller编译APK文件时出现libpng error: Not a PNG file的错误
- 当maven引用的jar在maven库中下载不到源代码
- uniapp返回上一页_一例万级写入并发,百亿级数据,毫秒级返回架构分享