数据结构实验之图论十:判断给定图是否存在合法拓扑序列
来源:互联网 发布:公司数据库搭建 编辑:程序博客网 时间:2024/05/01 20:35
Problem Description
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
Input
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
Output
若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
Example Input
1 02 21 22 1
Example Output
YES
存在合法的拓扑序列说明图一定是一个有向无环图(DAG),通过每个节点的入度来判断是否为DAG
#include <iostream>#include <cstring>using namespace std;int map[11][11];int deg[11];bool vis[11];int main(int argc, char const *argv[]){int n,m,flag;while(cin>>n>>m){memset(map,0,sizeof(map));memset(deg,0,sizeof(deg));memset(vis,false,sizeof(vis));if(m == 0){cout<<"YES"<<endl;continue;}for (int i = 0; i < m; ++i){int a,b;cin>>a>>b;map[a][b] = 1;deg[b]++;}for (int i = 1; i <= n; ++i){flag = 0;for(int j = 1; j <= n; ++j){if(!vis[j] && deg[j] == 0){vis[j] = true;for(int k = 1; k <= n; ++k){if(map[j][k]){deg[k]--;}}flag = 1; break;}}}if(flag == 0)cout<<"NO"<<endl;elsecout<<"YES"<<endl;}return 0;}
阅读全文
0 0
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 2140 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 283MoveZeroes
- 【HDU1695】GCD(莫比乌斯反演)
- 虚拟机Ubuntu14.04+MXNET+CPU安装
- c语言实现二叉树常用算法
- 通过C++实现判断点与多边形的关系和两点之间的距离
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 关于Home Lab的搭建——像使用服务器一样远程管理(三)
- Mybatis之缓存
- maven私服搭建和使用
- 关于Thread中的toString的问题
- C++实现二叉树的递归遍历与非递归遍历
- 友盟多渠道打包
- Fiddler的详细介绍
- 【Java高并发学习】重入锁ReentrantLock、Condition条件及信号量