2018-3-25

拓扑排序的题目,需要注意的是,这里是边输入边判断的,之前有一组数据一直不知道为什么不过:

A>F
B>D
C>E
F>D
D>E
E>F

其实当最后一个加进去的时候,应该是出现回路的,而且题目要求我们先判断回路再判断是否解不唯一。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int N = 26;
bool x[N+1][N+1];
int in[N+1],tmp[N+1];
char res[N+1];
int m,n; int topoSort(){int i,j,s,point,cnt=0,f=1;for (i=1;i<=n;i++){tmp[i]=in[i];}for (i=1;i<=n;i++){s=0;for (j=1;j<=n;j++){if (!tmp[j]){s++;point=j;} }if (s==0) return 0;if (s>1) f=-1;tmp[point]=-1;res[cnt++]=point;for (j=1;j<=n;j++){if (x[point][j]) tmp[j]--;} }return f;
}int main(){int i,j,p,q;char a,b,ch[4];bool flag;while (cin>>n>>m){if (m==0&&n==0) break;memset(x,0,sizeof(x));memset(in,0,sizeof(in));flag=0;for (i=1;i<=m;i++){scanf ("%s",ch);a=ch[0];b=ch[2];if (flag) continue;p=a-'A'+1;q=b-'A'+1;x[p][q]=1;in[q]++;p=topoSort();if (p==0){printf("Inconsistency found after %d relations.\n",i);flag=1;}else if (p==1){printf("Sorted sequence determined after %d relations: ",i);for(j=0;j<n;j++){printf("%c",res[j]+'A'-1);}printf(".\n");flag=1;}}if (!flag){printf("Sorted sequence cannot be determined.\n");}}return 0;
}

在topoSort函数里面,当s>1的时候,不应该立刻返回多解,而是要继续执行,当把A,B,C对应的字母的入度都减一的时候我们会发现其实该图是存在回路的。

poj 1094 Sorting It All Out(拓扑排序)相关推荐

  1. POJ 1094 Sorting It All Out (拓扑排序)

    题意:给你一些大写字母间的偏序关系,然后让你判断能否唯一确定它们之间的关系,或者所给关系是矛盾的,或者到最后也不能确定它们之间的关系.   由DAG图节点的偏序关系确定节点的排序可以由拓扑排序求出.而 ...

  2. POJ - 1094 Sorting It All Out(拓扑排序+floyd传递闭包)

    题目链接:点击查看 题目大意:给出N个点以及M个比较关系,问在第几个数字可以确定出唯一的序列,或者判断出矛盾的序列,或者最后也无法确定出一个唯一的序列 题目分析:关于这个题目可以直接分类讨论,可以直接 ...

  3. POJ - 1094 Sorting It All Out(拓扑排序)

    https://vjudge.net/problem/POJ-1094 题意 对于N个大写字母,给定它们的一些关系,要求判断出经过多少个关系之后可以确定它们的排序或者排序存在冲突,或者所有的偏序关系用 ...

  4. nyoj349 poj1094 Sorting It All Out(拓扑排序)

    nyoj349   http://acm.nyist.net/JudgeOnline/problem.php?pid=349 poj1094   http://poj.org/problem?id=1 ...

  5. Sorting It All Out 拓扑排序+确定点

    这一道题的话  数据有一点问题    ........     例如 不过 还是   能理解一下  试试吧  ......... 3 5 A<B B<C C<A A<C B&l ...

  6. Poj 1094 拓扑排序Kahn

    Poj 1094 拓扑排序Kahn Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4133 ...

  7. POJ 1094 拓扑排序

    题意大坑,建议先看Discuss-- 否则代码写得就像以下的一团糟.... 其实并不难,拓扑排序+乱搞就可以AC. // by SiriusRen #include <cstdio> #i ...

  8. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  9. [POJ] 3687 Labeling Balls(拓扑排序)

    题目地址:http://poj.org/problem?id=3687 反向建边,即重的球指向轻的球,注意重边,然后拓扑排序.从n-->1循环,即每次从入度为0的球里面选编号大的存(包含输入的逻 ...

最新文章

  1. 电话连线(最小生成树)
  2. java sort reverse_Java ArrayList sort() 方法
  3. 文件服务器在哪里靠谱,vps作为文件服务器靠谱吗
  4. python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...
  5. 美国通过热像无人机找到失踪老人
  6. trident State应用指南
  7. 异形3×3魔方还原教程_【初级篇】(四)最简单的三阶魔方入门教程——中层还原...
  8. spring容器bean的作用域 spring容器是否是单例的一些问题
  9. python自动化测试脚本可以测php吗_python unittest实现api自动化测试_python
  10. 聊聊互联网秋招总结 经验分享
  11. 面试官:如何评估一个线程池需要设置多少个线程
  12. fpga数电基础之--------触发器
  13. win32 汇编实现全盘文件扫描功能(杀毒程序的扫描全盘文件功能)
  14. 设计一个具有大纯时延时间的一阶惯性环节的计算机控制系统,具有纯滞后一阶惯性系统计算机控制系统设计.pdf...
  15. 基于S7-200 PLC控制的小型自动化立体仓
  16. CSS两种盒模型(标准盒模型IE盒模型)
  17. 【设计模式】观察者模式
  18. zabbix使用自动发现添加主机
  19. ipad怎么分屏方法
  20. 使用Vue+vue-router+路由守卫实现路由鉴权功能实战

热门文章

  1. 导师推荐,本周开课 | 第 5 期临床基因组家系分析,同时解决科研和临床问题
  2. ggplot2之配对数据差异比较及结果可视化
  3. 部分植物基因组数据库汇总
  4. P2651 添加括号III(python3实现)
  5. 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
  6. 第十届蓝桥杯大赛青少年创意编程C++组省赛 第2题 小猫吃鱼
  7. laravel项目白屏问题解决办法及原因
  8. springboot主线程_SpringBoot(一) 多线程与异步
  9. linux 程序收到sigsegv信号_linux下定位多线程内存越界问题实践总结
  10. docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...