这道题目考察了拓扑排序的基本思想:每一步寻找一个入度为0的结点,然后 删除之。将这个结点指向的结点入度减1。删除从这个结点出发的所有边

同时考察了对于一个有向图是否有环、是否严格有序的判断。(当发现多个结点的度 为0时,则不是严格有序。当发现没有结点入度为0时,则有环) 需要注意的是逻辑上的关系。“Sorted sequence cannot be determined.”这个判断, 要放在最后,即只有发现了所有的点都没有环,且并没有发现严格有序性质的时候, 才可以判为“Sorted sequence cannot be determined."逻辑上的判决一定要注意优先级。

这个问题中优先级最高的是判断有环。一旦发现找不到度为0的结点,则立即return。

第二优先级是是否严格有序的判断。当每一步能且只能找到一个度为0的结点,则return。

第三优先级是无法确定。(当发现无法确定时,并不能立即return,因为还需要判断是否有环)

思维方式:当条件x成立时,另外的条件y,z是否一定不成立。如果一定不成立, 则可以断言return。否则必须继续判断下去。 提交记录: 1.样例未过!由于拓扑排序算法中,处理过程中入度减1的同时,并没有将对应的边删掉。 2.样例未过! 由于在子函数judge中,对graph图进行了修改,导致后面处理失败。增加了memcpy解决。 4.wrong answer! 在judge函数中,当出现多个结点度为0的时候,还需要继续判冲突,而不能直接return

An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not.

Input

Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n <= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input.

Output

For each problem instance, output consists of one line. This line should be one of the following three:

Sorted sequence determined after xxx relations: yyy...y. 
Sorted sequence cannot be determined. 
Inconsistency found after xxx relations.

where xxx is the number of relations processed at the time either a sorted sequence is determined or an inconsistency is found, whichever comes first, and yyy...y is the sorted, ascending sequence.

Sample Input

4 6
A<B
A<C
B<C
C<D
B<D
A<B
3 2
A<B
B<A
26 1
A<Z
0 0

Sample Output

Sorted sequence determined after 4 relations: ABCD.
Inconsistency found after 2 relations.
Sorted sequence cannot be determined.
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
int ans,m,n;
char top[50];
int s[50],t[50];//t数组记录v赢了几次,s数组保留赢的次数
int book[50][50];
int mark[30];
int tuopu()
{int l=0,flag=0;for(int h=1; h<=ans; h++){int k=-1,num=0;for(int i=1; i<=n; i++){if(mark[i]&&s[i]==0)//字母出现过,但是一次也没赢{k=i;num++;}}if(k==-1)return -1;if(num!=1)flag=1;s[k]=-1;top[l]='A'+(k-1);l++;for(int i=1; i<=n; i++){if(book[k][i])s[i]--;}}top[l]=0;if(ans==n&&flag==0)return 1;return 0;
}
int main()
{while(~scanf("%d%d",&n,&m)&&(n+m))//n个字母,m组关系{ans=0;int flag=0;char c[10];memset(t,0,sizeof(t));memset(mark,0,sizeof(mark));//标记字母是否出现过memset(book,0,sizeof(book));for(int i=1; i<=m; i++){scanf("%s",c);if(flag==1)//已找到目标情况continue;int u=c[0]-'A'+1;int v=c[2]-'A'+1;if(mark[u]==0){mark[u]=1;ans++;}if(mark[v]==0){mark[v]=1;ans++;}if(book[u][v]==0){t[v]++;book[u][v]=1;for(int j=0; j<30; j++)s[j]=t[j];//将赢的次数保留下来int a=tuopu();if(a==-1)//有环{printf("Inconsistency found after %d relations.\n",i);flag=1;}else if(a==1)//有序{printf("Sorted sequence determined after %d relations: %s.\n",i,top);flag=1;}}}if(flag==0)printf("Sorted sequence cannot be determined.\n");}return 0;
}

Sorting It All Out (易错题+拓扑排序+有向图(判环+判有序)优先级)相关推荐

  1. 【考研】830 + 848 暨大2012-2022真题易混易错题总结(二)

    前言 以下题目,均源自于暨南大学 2012 - 2022 年的 830 + 848 真题.主要是对真题中易混易错题进行记录和总结. 分为三篇博文,此乃第二篇,真题是 2018 - 2020 年的,即 ...

  2. 判断小数是否相等_四年级上册数学填空+计算+判断易错题整理练习,收藏练一练!...

    四年级数学易错题练习 一.填空题 1.1.25×0.8表示(              ). 2.去掉0.25的小数点,就是把这个数扩大(      ):把50.4的小数点向左移动两位,就是把它缩小到 ...

  3. 为了探究不同光照处理_浅谈中考物理实验探究易错题

    中考实验探究易错题主要在于伏安法实验和物质密度的测量.伏安法就是用电压表和电流表测量电阻或测量小灯泡的电功率的方法.伏安法测量电阻和测量电功率的实验是初中物理电学中重要的实验,也是每年中考实验探究题中 ...

  4. C语言易错题集 第四部

    C语言易错题集 第四部 一.位操作相关 二.switch()相关 三.输出相关 四.实数相关 五.指针&a相关 六.指针访问数组元素相关 七.转义字符相关 八.类型提升问题 九.是不是正确的浮 ...

  5. C语言易错题集 第二部

    C语言易错题集后续 一.共用体相关(union) 二.do,while相关 三.char溢出相关 四.printf()相关 五.++相关 六. for语句相关 七.calloc()相关 八.defin ...

  6. js逻辑训练题_二建冲刺必刷300题!精选历年真题+母子题+模考易错题!

    订阅公众号,回复[口诀],获取完整版实务口诀 你是不是常常疑惑为什么同样在做题,同样熬通宵,同样很努力,为什么有人顺利拿证,有人却因几分之差黯然落榜? 因为二建不仅拼努力的程度,更要拼对精准二建信息的 ...

  7. 吴老师用计算机输入一份稿件,分数乘除法易错题复习1.pdf

    分数乘除法易错题精选 班级 姓名 家长签名 一.填空 1 4 2 5 3 1. 小时= ( )分 米= ( )厘米 ( ) m = 公顷 吨= ( ) 3 25 8 8 千克 2 ( ) 2. 把 米 ...

  8. c语言解三元一次方程组_七年级下学期《8.3 一元一次不等式组》2020年高频易错题集...

    一.选择题(共10小题) 二.填空题(共5小题) 三.解答题(共5小题) 七年级下学期<8.5 一元一次不等式组>2020年高频易错题集 参考答案与试题解析 一.选择题(共10小题) [点 ...

  9. 计算机考研分析题,2020计算机考研,易错题分析与常考点总结

    2020计算机考研易错题分析与常考点总结,今天就以电子科技大学的计算机为例讲解数据结构的知识点. 1.栈和队列 以"存储位置相邻"来表示线性表中元素间的逻辑关系: 若已知表中首元素 ...

最新文章

  1. 两大主流IT媒体全程解秘我的“心路历程”
  2. 突发!哈佛要求本科生5天内搬走,国际学生恐无家可归
  3. python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...
  4. 吴恩达机器学习(十一)K-means(无监督学习、聚类算法)
  5. 【MySQL学习】-- 0x04 通配符小结
  6. 解决打包AssetBundle时Shader(材质)丢失问题
  7. Windows核心编程_HOOk SOCKET实现封包拦截
  8. 如果mysql磁盘满了,会发生什么?还真被我遇到了~
  9. shop++ jtm2.5最新版本发布
  10. 精美绝伦的KShong GHOST Windows7-Pro 2010幸福版
  11. Kubernetes30--弹性伸缩总结
  12. 两个微信号绑定一个服务器ip,一个手机号能绑定几个微信账号(一个手机号注册多个微信号的方法)...
  13. python-web开发(一)知识储备准备
  14. 怎样清理苹果手机内存空间_你还不知道?苹果手机这样清理垃圾,轻松腾出10G内存!...
  15. VLDB 历年最佳论文汇总
  16. iOS 开发者账号权限分配
  17. 2019年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
  18. input输入框短信验证码处理
  19. 使用官方连供墨盒,打印机暂停打印的可能解决方案
  20. 用java画只乌龟_Swing编程方面步骤之四java绘图技术画小乌龟

热门文章

  1. linux之安装mysql提示Error: Unable to find a match: mysql-community-server
  2. java 从数据库取值_java 连接数据库取值问题
  3. python随机抽取人名_python的random
  4. 最诡异数学悖论:1+1=1
  5. 68张机械原理动图,够你看一晚上了!
  6. 神经网络简史:BP算法后的又一突破—信念网络
  7. 用 Python 实现一个大数据搜索引擎
  8. 给新手程序员的16个工作必备小妙招,省下时间去LOL吧!
  9. 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
  10. python继承方式是基于原型吗_基于原型与基于类的继承