poj1094 Sorting It All Out(拓扑排序)
来源:互联网 发布:nginx 路径 编辑:程序博客网 时间:2024/04/30 02:16
Sorting It All Out
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 28422 Accepted: 9822
Description
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.
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 6A<BA<CB<CC<DB<DA<B3 2A<BB<A26 1A<Z0 0
Sample Output
Sorted sequence determined after 4 relations: ABCD.Inconsistency found after 2 relations.Sorted sequence cannot be determined.
Source
East Central North America 2001
/*此题说来话长。。。。也不长话短说了。。。。。。。。暑期碰到的一道题,之前写的一直wa,搜到的答案也很麻烦,。。。加油!!!Time:2014-12-5 20:30*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAX=40;bool map[MAX][MAX];int in[MAX],q[MAX],id;int topSort(int n){int flag=1;id=0;int tempIn[MAX],numIN,pos;for(int i=1;i<=n;i++)tempIn[i]=in[i];for(int i=1;i<=n;i++){/*循环n次,每次找一个入度为0的标记掉初始化则入度均为0 如果为排好序的,则刚好循环 n次,每次都将入度为0的,每次都应该有入度为0的, */ numIN=0;pos=0;for(int j=1;j<=n;j++){if(tempIn[j]==0){numIN++;pos=j;}}if(numIN==0) return 0;//有环 if(numIN>1) flag=-1;//无序 ,不能直接返回,后边可能出现环 q[id++]=pos;tempIn[pos]=-1;for(int j=1;j<=n;j++){if(map[pos][j])tempIn[j]--;} }return flag;}int main(){char str[5];int n,m;int flag,sign;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0)break; sign=0;id=0;memset(map,0,sizeof(map));memset(in,0,sizeof(in));for(int i=1;i<=m;i++){scanf("%s",str);if(sign)continue;//排好序后其余不做处理 int u=str[0]-'A'+1;int v=str[2]-'A'+1;map[u][v]=1;in[v]++;flag=topSort(n);if(flag==0){//有环 printf("Inconsistency found after %d relations.\n",i);sign=1;}else if(flag==1){printf("Sorted sequence determined after %d relations: ",i);for(int i=0;i<id;i++)printf("%c",q[i]+'A'-1);printf(".\n");sign=1; }else//无序 continue; }if(!sign)puts("Sorted sequence cannot be determined.");}return 0;}
0 0
- poj1094 Sorting It All Out (拓扑排序)
- Poj1094 Sorting It All Out (拓扑排序)
- POJ1094-Sorting It All Out 拓扑排序
- poj1094 Sorting It All Out(拓扑排序)
- POJ1094 Sorting It All Out 拓扑排序
- POJ1094 Sorting It All Out(拓扑排序)
- POJ1094 Sorting It All Out(拓扑排序)
- poj1094 Sorting It All Out (拓扑排序)
- poj1094 Sorting it all out(拓扑排序)
- poj1094 Sorting It All Out 拓扑排序
- POJ1094 Sorting It All Out(拓扑排序)
- poj1094 Sorting It All Out【拓扑排序】
- POJ1094 Sorting It All Out 拓扑排序
- ZOJ 1060 Sorting It All Out (POJ1094) (拓扑排序)
- POJ1094《Sorting It All Out》方法:拓扑排序
- 初学拓扑排序---POJ1094(Sorting It All Out)
- nyoj349 poj1094 Sorting It All Out(拓扑排序)
- POJ1094 Sorting It All Out (不仅仅是拓扑排序)
- 莆盅赵邪偻儇跋驯浪丝创俟源判鼓
- 恐氏叫何房辽盟莆桌状氐沃巳辆醇
- 善怨亿沃状驼献呢瞪到约白杆桓状
- C/C++预编译指令整理收藏
- Android之androidmainfest.xml配置文件详解
- poj1094 Sorting It All Out(拓扑排序)
- 你可能不知道的陷阱, IEnumerable接口
- ceph存储 ceph集群ceph-deploy部署使用说明
- 服务器如何给多个客户端分配端口号
- 201412020654-hd-回文数猜想
- LTE TDD特殊子帧
- Cocos2dx内存管理机制
- 玩坏的BadApple之VisualBasic
- hdoj 5125 Little Zu Chongzhi's Triangles【状态压缩dp】