图结构练习——判断给定图是否存在合法拓扑序列

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description

给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
Input

输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。

Output

若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。

Example Input

1 0
2 2
1 2
2 1
Example Output

YES
NO
Hint

Author

赵利强

拓扑排序:

例如,假定一个计算机专业的学生必须完成全部课程。在这里,课程代表活动,学习一门课程就表示进行一项活动,学习每门课程的先决条件是学完它的全部先修课程。

如学习《数据结构》课程就必须安排在学完它的两门先修课程《离散数学》和《算法语言》之后。

学习《高等数学》课程则可以随时安排,因为它是基础课程,没有先修课。

若用AOV网来表示这种课程安排的先后关系。图中的每个顶点代表一门课程,每条有向边代表起点对应的课程是终点对应课程的先修课。图中的每个顶点代表一从图中可以清楚地看出各课程之间的先修和后续的关系。

在AOV网中,若不存在回路,则所有活动可排列成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓扑序列(Topological order),由AOV网构造拓扑序列的过程叫做拓扑排序(Topological sort)。AOV网的拓扑序列不是唯一的,满足上述定义的任一线性序列都称作它的拓扑序列。
(百度)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 12
int ma[MAXN][MAXN];//存储图
int que[MAXN];
int indegree[MAXN];//记录入度个数
int n, m;
void topo()
{int rear = 0, front = 0;for(int i=1;i<=n;i++)//寻找入度为零的节点入列{if(indegree[i]==0)que[rear++] = i;}while(front<rear){for(int i=1;i<=n;i++)//遍历每个节点{if(ma[que[front]][i]==1){indegree[i]--;//入度数目减少if(indegree[i]==0)//如果入度为零,则入列que[rear++] = i;}}front++;//将节点出列}if(front==n)//所有节点都已遍历完全,都可以完成printf("YES\n");elseprintf("NO\n");
}
int main()
{int a, b;while(~scanf("%d %d", &n, &m)){memset(ma, 0, sizeof(ma));memset(indegree, 0, sizeof(indegree));for(int i=0;i<m;i++){scanf("%d %d", &a, &b);ma[a][b] = 1;//有路indegree[b]++;//入度个数增加}topo();}return 0;
}

图结构练习——判断给定图是否存在合法拓扑序列(topo)相关推荐

  1. 图结构练习——判断给定图是否存在合法拓扑序列

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

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

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

  3. GNN-图卷积模型-2016:PATCHY-SAN【图结构序列化:将图结构转换成了序列结构,然后直接利用卷积神经网络在转化成的序列结构上做卷积】

    我们之前曾提到卷积神经网络不能应用在图结构上是因为图是非欧式空间,所以大部分算法都沿着找到适用于图的卷积核这个思路来走. 而 PATCHY-SAN 算法 <Learning Convolutio ...

  4. python 列表转图结构_Python读取网络(图)边列表数据进而转化为邻接矩阵

    import networkx as nx G = nx.Graph() path = './edge_list.txt' edge_list = [] node_set = set() #集合的特性 ...

  5. ICML2020 | 神经网络的图结构如何影响其预测性能?

    作者 | 董靖鑫 审稿 | 程玉 今天给大家介绍的是来自斯坦福大学的Jure Leskovec课题组发表在ICML2020上的文章" Graph Structure of Neural Ne ...

  6. Theano学习笔记(三)——图结构

    图结构(Graph Structures)这是理解Theano该基金会的内部运作. Theano编程的核心是用符号占位符把数学关系表示出来. 图结构的组成部分 如图实现了这段代码: importthe ...

  7. 线性结构、树结构、图结构

    1.数组和顺序表 2.单链表 3.循环链表 4.双向链表 5.队列和栈 6.树结构的特性 7.二叉树的遍历 8.哈夫曼树和哈夫曼编码 9.二叉树排序 10.图结构的特性 11.图的遍历

  8. 图神经网络(一)图信号处理与图卷积神经网络(2)图信号与图的拉普拉斯矩阵

    图神经网络(一)图信号处理与图卷积神经网络(2)图信号与图的拉普拉斯矩阵  给定图G=(V,E)G=(V,E)G=(V,E),V表示图中的节点集合,假设其长度为NNN,图信号是一种描述V→RV→RV→ ...

  9. sdut 2140 有向图中是否存在拓扑序列的判断

    Problem Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列. 讲解:http://blog.csdn.net/dm_vincent/article/details/ ...

最新文章

  1. 快速人脸验证--MobileFaceNets: Efficient CNNs for Accurate Real-time Face Verification on Mobile Devices
  2. 运用Handler.post()方法进行数据更新跟用Message对比(18)
  3. spark读取文件源码分析-1
  4. 技术系统进化法则包括_技术系统进化论,模式五、技术集成以增加系统功能
  5. 【C++】 Boost 库编译技巧总结
  6. TikZ学习笔记(三)图形的标记与交点
  7. python自动华 (十二)
  8. 【花式】基于matlab花圣诞树【含Matlab源码 001期】
  9. 最佳匹配问题-KM算法
  10. WordPress获取当前网站域名
  11. 用python证明采样定理_这一切都从指数函数开始(4)——采样定理
  12. 5月25日------疯狂猜成语-----四周第七次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜...
  13. java读取图片文字
  14. [leetcode]初级算法——动态规划
  15. UI设计中标签设计总结
  16. 基于Spring Boot的点餐微信小程序设计与实现
  17. Hadoop 面试汇总
  18. 前端基础(二):HTML之列表、表格、表单标签
  19. 新的一年,怀揣技术追求,一直在路上
  20. python:水果与设计模式-抽象工厂模式

热门文章

  1. AD20调整铜皮边缘
  2. python keyboard方法_python 偷懒技巧——使用 keyboard 录制键盘事件
  3. WinForm BaseClass类常用通用方法
  4. 程序员兼职、远程外包、按需雇佣、远程工作和自由工作指南 — 第二部分
  5. 高手面试一个人,问4个问题就够了
  6. 使用μC/Probe 调试XMC的问题总结
  7. Swagger 入门
  8. 一线城市写字楼怎么了,总面积的一半都租不出去
  9. 提高执行力的五个法则
  10. 小学生机器人编程知识