Codeup墓地-1123
src:http://codeup.cn/problem.php?id=1123
1123: 确定排序序列
时间限制: 1 Sec 内存限制: 32 MB
题目描述
一个由不同的值组成的按升序排序的序列,通常使用小于操作符,把元素从小到大排列。
例如,有序序列A,B,C,D表示A<B,B<C和C<D。
现给你一组形如A<B的关系,请你确定是否已经形成一个排序的序列。
输入
输入包含多组测试数据。每组输入的第一行是两个正整数n和m。
n表示排序对象的个数,2<=n<=26。排序对象是字母表开始的n个大写字符。
m表示形如A<B的关系的个数。
接下来m行,每行输入一个关系,由三个字符构成:第一个大写字母,符号“<”,第二个大写字母。字母不会超过字母表开始的n个字母的范围。
当n=m=0时,输入结束。
输出
对于每组输入,输出一行。该行将是以下三者之一:
Sorted sequence determined after xxx relations: yyy…y.(在xxx个关系后,确定了排序序列:yyy…y)
Sorted sequence cannot be determined.(不能确定排序序列)
Inconsistency found after xxx relations.(在xxx个关系后,发现关系矛盾)

解释说明:
xxx是处理关系时,确定排序序列已经形成或发现关系矛盾时的关系数目,哪种情况先出现,就输出哪种。yyy…y是排序的升序序列。
样例输入
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
样例输出
Sorted sequence determined after 4 relations: ABCD.
Inconsistency found after 2 relations.
Sorted sequence cannot be determined.

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int N, M;
const int MAXN = 27,MAXM = 1000;
int g[MAXN][MAXN],in[MAXN],ans[MAXN];
int topoSort(){int in1[MAXN];for(int i=0;i<N;i++)in1[i]=in[i];for(int k=0;k<N;k++){int i=0;while(in1[i]!=0){i++;if(i>=N)return 2;//成环,矛盾}ans[k]=i;in1[i]--;for(int j=0;j<N;j++)if(g[i][j])in1[j]--;}for(int i=0;i<N-1;i++){int ok=0;if(g[ans[i]][ans[i+1]])ok=1;if(!ok)return 1;//不能确定排列序列}return 0;//确定排序
}
int main(){while(scanf("%d%d",&N,&M)!=EOF&&!(!N&&!M))    {memset(g,0,sizeof(g));memset(in,0,sizeof(in));char s[10];int next=0;for(int i=0;i<M;i++){scanf("%s",s);if(next)continue;int u=s[0]-'A',v=s[2]-'A';g[u][v]=1;in[v]++;int r=topoSort();if(r==0){printf("Sorted sequence determined after %d relations: ", i+1);for(int j=0;j<N;j++)printf("%c",ans[j]+'A');printf(".\n");next=1;continue;}else if(r==1&&i==M-1)printf("Sorted sequence cannot be determined.\n");else if(r==2){printf("Inconsistency found after %d relations.\n", i+1);next=1;continue;}}}return 0;
}

Codeup墓地-1123相关推荐

  1. Codeup墓地-1107

    Codeup墓地-1107 src:http://codeup.cn/problem.php?id=1107 1107: 欧几里得游戏 时间限制: 1 Sec 内存限制: 32 MB 题目描述 小明和 ...

  2. Codeup墓地1817号A+B

    Codeup墓地链接:http://codeup.cn/ 本题链接:http://codeup.cn/problem.php?cid=100000575&pid=1 问题描述: 问题 B: A ...

  3. Codeup墓地-2337

    Codeup墓地-2337 src:http://codeup.cn/problem.php?id=2337 2337: 阻击火箭队 时间限制: 1 Sec 内存限制: 32 MB 题目描述 小明很喜 ...

  4. Codeup墓地-1985

    Codeup墓地-1985 src:http://codeup.cn/problem.php?id=1985 1985: 任务调度 时间限制: 1 Sec 内存限制: 32 MB 题目描述 读入任务调 ...

  5. Codeup墓地-2118

    Codeup墓地-2118 src:http://codeup.cn/problem.php?id=2118 2118: 非常可乐 时间限制: 1 Sec 内存限制: 32 MB 题目描述 大家一定觉 ...

  6. Codeup墓地-1098

    Codeup墓地-1098 src:http://codeup.cn/problem.php?id=1098 1098: 最少的交换 时间限制: 1 Sec 内存限制: 32 MB 题目描述 现在给你 ...

  7. Codeup墓地-2117

    Codeup墓地-2117 src:http://codeup.cn/problem.php?id=2117 2117: 确定比赛名次 时间限制: 1 Sec 内存限制: 32 MB 题目描述 有N个 ...

  8. Codeup墓地-2070

    Codeup墓地-2070 src:http://codeup.cn/problem.php?id=2070 2070: 坠落的蚂蚁 时间限制: 1 Sec 内存限制: 32 MB 题目描述 一根长度 ...

  9. Codeup墓地-1104

    Codeup墓地-1104 src:http://codeup.cn/problem.php?id=1104 1104: 棋盘问题 时间限制: 1 Sec 内存限制: 32 MB 题目描述 在一个给定 ...

最新文章

  1. 深圳网络推广总结影响网站优化的不友好设计有哪些?
  2. linux下/etc目录详解
  3. python扫雷的代码及原理_基于Python实现的扫雷游戏实例代码
  4. jremind V0.1.3.0添加透明
  5. Adobe illustrator 排版后图形导出 - 连载 3
  6. dax 筛选 包含某个字_Power BI 利器——DAX
  7. 机器学习基础(六十一)—— 范数及范数的微分
  8. C# Task.FromResult的用法
  9. Python中 将txt文件转换为csv文件
  10. AIR ANE(本机扩展)使用中的一些问题(Android平台)
  11. 利用 openresty balancer_by_lua 实现一个简单的 ip_hash upstream 调度
  12. tp5 MySQL发红包功能_ThinkPHP5微信现金红包的开发
  13. 天津联通移动电信DNS
  14. mysql 正则表达式_MySQL的正则表达式
  15. 华为路由器联动_不拉宽带也能畅快冲浪,华为移动路由帮你实现
  16. Django 对符合条件的字段求和 aggregate
  17. carton num_Carton先生–世界上第一个卡通系列MadeWithUnity
  18. lqc_TCP Wrappers访问控制
  19. 【Python】Python xlwt : More than 4094 XFs (styles) 解决方法
  20. python第三方安装包总结

热门文章

  1. C语言【程序21】 题目:打印出如下图案(菱形)
  2. Luogu3426 [POI2005]SZA-Template (KMP)(未完成)
  3. Mysql许久不用后服务无法打开,暴力解决法(报错:服务没有报任何错误)
  4. win7下php 5.6连接mongodb扩展
  5. 计算机的USB接口可以扩展吗,电脑的USB接口不够用怎么办?别急,我来支招!
  6. 康奈尔大学计算机交叉学专业,美国康奈尔大学EE专业设置的五大方向
  7. 工作6年,我经历的BAT等IT公司面试及离职感受
  8. Halcon中关于角度计算的算子详解
  9. panic和recover的使用规则
  10. 首席新媒体商学院黎想:全新的抖音涨粉攻略