数据结构实验之图论十:判断给定图是否存在合法拓扑序列
来源:互联网 发布:大数据监控系统 编辑:程序博客网 时间:2024/06/05 09:27
Problem Description
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
Input
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
Output
若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
Example Input
1 02 21 22 1
Example Output
YESNO
//若存在环路则不存在拓扑序列。//可以记录下每个点的入度,把入度为零的点逐一删去//若无环路。最后就不剩下点了#include <stdio.h>#include <string.h>int n, m;int map[15][15], book[15], dgree[15];//dgree记录每个点的入度int main(){ int count; //count记录点的个数 int i, j, u, v, k; while(scanf("%d %d", &n, &m) != EOF) { count = n; memset(map, 0, sizeof(map)); memset(book, 0, sizeof(book)); memset(dgree, 0, sizeof(dgree)); for(i = 0; i < m; i++) { scanf("%d %d", &u, &v); map[u][v] = 1; dgree[v]++;//记录入度 } for(i = 1; i <= n; i++) //寻找入度为零的点 { for(j = 1; j <= n; j++) { if(!dgree[j] && !book[j]) //入度为零且未被访问过 { book[j] = 1; count--; //count--说明删去了一个入度为零的点 for(k = 1; k <= n; k++) //和被删去的点存在联系的点的入度也发生了变化。遍历寻找,修改。 { if(map[j][k]) dgree[k]--; } } } } if(count) //count不为零说明没有删除干净 printf("NO\n"); else printf("YES\n"); } return 0;}
阅读全文
0 0
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 2140 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 移动端布局
- 第五届图灵杯1872PJ的情书
- C++网络(四)持续处理请求的C/S网络
- 表空间的初始大小分配
- 以太网,IP,TCP,UDP数据包分析
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 富文本编辑器中按CTRL+ENTER键直接保存没有验证
- elasticseach基础
- [20]_怎么看STM32的哪些引脚是否兼容5V?
- 世界互联网大会溢出效应:比大佬饭局更值得关注的是产业互联网
- cortex m7 架构 随笔
- java第三篇 泛型的了解与使用
- 利用kattle将SQLserver中的数据导入到vertica中
- 蓝桥杯 算法训练 传纸条