poj1094Sorting It All Out(拓扑排序)
来源:互联网 发布:eclipse maven mac 编辑:程序博客网 时间:2024/05/17 14:28
题意:明确告诉你多少个点,多少条边,a<b可以看做,a连向b.问你能不能构成拓扑排序。
有点不同时,这里判断是一条一条加入图中,如果已经构成一个唯一的拓扑排序,后面的边就忽略(不造有这个关系W了好多次),并输出到第几条边构成拓扑排序,当然很容易想到如果一条一条检测时已构成环,也可以直接判断此图无法构成拓扑排序,输出从第几条边输入时就不能构成拓扑排序。最后只有把所有边输入完后并没有出现以上情况,才能判断构成的拓扑排序是不是唯一的。
#include<cstring>#include<cstdio>#include<iostream>using namespace std;const int Maxn=30;int n,m,M[Maxn][Maxn],ans[Maxn],num[Maxn];int toposort(){ memset(num,0,sizeof(num)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(M[i][j]==1) num[j]++; int t=0,flag=1,select; for(int i=0;i<n;i++) { int cnt=0; for(int j=0;j<n;j++) if(num[j]==0) {select=j;cnt++;} if(cnt==0) return 0; if(cnt>1) flag=2; num[select]=-1; ans[t++]=select; for(int j=0;j<n;j++) if(M[select][j]==1) num[j]--; } return flag;}int main(){ while(~scanf("%d %d",&n,&m)&&n&&m) { int sign=0,s; memset(M,0,sizeof(M)); // memset() char str[5]; for(int i=0;i<m;i++) { scanf("%s",str); M[str[0]-'A'][str[2]-'A']=1; if(sign) continue; s=toposort(); if(s==0) { printf("Inconsistency found after %d relations.\n",i+1); sign=1; } if(s==1) { printf("Sorted sequence determined after %d relations: ",i+1); for(int j=0;j<n;j++) printf("%c",ans[j]+'A'); printf(".\n"); sign=1; } } if(!sign) printf("Sorted sequence cannot be determined.\n"); }}
0 0
- POJ1094Sorting It All Out 拓扑排序
- poj1094Sorting It All Out(拓扑排序)
- poj1094Sorting It All Out(拓扑排序)
- poj1094Sorting It All Out 最短路前基础拓扑排序
- poj1094Sorting It All Out(拓朴排序)
- poj1094Sorting It All Out(拓朴排序)
- poj1094Sorting It All Out
- poj1094Sorting It All Out
- poj1094Sorting It All Out
- poj1094 Sorting It All Out (拓扑排序)
- Poj1094 Sorting It All Out (拓扑排序)
- POJ1094-Sorting It All Out 拓扑排序
- 拓扑排序Sorting It All Out
- poj1094 Sorting It All Out(拓扑排序)
- POJ1094 Sorting It All Out 拓扑排序
- POJ1094 Sorting It All Out(拓扑排序)
- nyoj349 Sorting It All Out(拓扑排序)
- POJ1094 Sorting It All Out(拓扑排序)
- Linux(Centos6.5)下安装svn服务器,并通过http访问
- “对象被多次指定;已忽略多余的指定”并伴有"无法解析的外部符号 "xxx",该符号在函数 "xxx"中被引用的错误"
- Unity3D游戏引擎最详尽基础教程
- String类的实现
- hdoj 5240 Exam
- poj1094Sorting It All Out(拓扑排序)
- iOS开发-类目、延展、协议
- 用递归调用计算和编程计算f(x) 的一些问题处理
- HDU 4777 Rabbit Kingdom [离线+树状数组]
- cocos code ide--js 中获取cocostudio中按钮以及函数回调
- Centos7的相关问题
- smarty学习笔记(01)——小模板
- ObjectiveC中打印Call Stack的若干方法
- iOS开发-Block语法