题目大意:将字母按照所给的序列从小到大输出。
算法思路:首先判断该图是否存在环,如果不存在,看能否进行有序输出,如果有序则后面的处理步骤都可以跳过,否则输出题目所给的话。
#include<iostream> #include<string> using namespace std; int n,m,indegree[30],map[30][30]; char ans[30]; int topusort() { int temp[30],sym=0,i,j,m,flag,res=1; for(i=0;i<n;i++) { temp[i]=indegree[i]; } for(i=0;i<n;i++) { m=0; for(j=0;j<n;j++) { if(temp[j]==0) { m++; flag=j; } } if(m==0)//说明有环 return 0; if(m>1) res=-1; ans[sym++]=flag+'A'; temp[flag]=-1; for(j=0;j<n;j++) { if(map[flag][j]>0) temp[j]--; } } return res; } int main() { int i,j,sign; string s; while(scanf("%d%d",&n,&m)&&(n!=0||m!=0)) { sign=0; memset(ans,0,sizeof(ans)); memset(map,0,sizeof(map)); memset(indegree,0,sizeof(indegree)); for(i=1;i<=m;i++) { cin>>s; if(sign) continue; int x=s[0]-'A'; int y=s[2]-'A'; map[x][y]=1; indegree[y]++; int ss=topusort(); if(ss==0)//有环 { cout<<"Inconsistency found after "<<i<<" relations."<<endl; sign=1; } if(ss==1)//有序 { cout<<"Sorted sequence determined after "<<i<<" relations: "; for(j=0;j<n;j++) { cout<<ans[j]; } cout<<"."<<endl; sign=1; } } if(!sign) cout<<"Sorted sequence cannot be determined."<<endl; } }
相关推荐
题目“poj1094”即是要求我们实现一个拓扑排序的解决方案。 **拓扑排序**的基本思想是:对于有向无环图G,如果存在一条从顶点u到顶点v的路径,那么在拓扑排序结果中,u一定出现在v之前。拓扑排序可以得到多个不同的...
【标题】"POJ 1094代码加测试工具"是关于解决一个特定的编程问题,即在编程在线评测平台POJ上提交的编号为1094的题目。这个题目可能涉及到算法的实现以及测试工具的使用,以便对程序进行验证和调试。 【描述】"POJ ...
【标题】"POJ1094-Sorting It All Out" 是一道来自北京大学在线判题系统POJ(Problem Set)的编程题目。这道题目主要考察的是排序算法的应用与优化,旨在提高参赛者的算法设计和实现能力。 【描述】"北大POJ1094-...
* 拓扑排序:拓扑排序是指计算图的拓扑排序的算法,如 poj1094。 * 二分图的最大匹配:二分图的最大匹配是指计算二分图的最大匹配的算法,如 poj3041、poj3020。 * 最大流的增广路算法:最大流的增广路算法是指计算...
* 拓扑排序:例如 poj1094。 * 二分图的最大匹配:例如 poj3041、poj3020。 * 最大流的增广路算法:例如 poj1459、poj3436。 3. 数据结构: * 串:例如 poj1035、poj3080、poj1936。 * 排序:例如 poj2388、...
- 拓扑排序:适用于有向无环图,用于确定任务的执行顺序,如`poj1094`。 - 二分图的最大匹配:如匈牙利算法,用于解决二分图的匹配问题,如`poj3041, poj3020`。 - **数据结构** - 字符串处理:如KMP算法和后缀...
- **例题**:poj1094 - **解释**:拓扑排序是对有向无环图的一种排序方式,可以用来解决依赖关系的问题。 ##### (5) 匹配算法 - **例题**:poj3041, poj3020 - **解释**:匹配算法主要用于解决图中节点间的匹配问题...
适用于有向无环图,帮助分析任务依赖关系,如poj1094所示。 #### 匹配算法 包括二分图的最大匹配和KM算法,用于解决资源分配类问题,如poj3041和poj3020。 ### 三、数据结构 #### 字符串处理 如Trie树(前缀树)...
- **拓扑排序**:对有向无环图的排序,如poj1094。 - **二分图最大匹配**:匈牙利算法,如poj3041和poj3020,解决分配问题。 - **最大流的增广路算法**:KM算法,如poj1459和poj3436,用于寻找网络中能传输的最大...
- (poj1094):适用于有向无环图(DAG)的一种排序方式,表示事件发生的顺序。 5. **网络流**: - (poj3041, poj3020):探讨如何在网络中找到最大流的问题,常用算法包括福特-福克森算法等。 6. **匹配算法**: ...
- 推荐题目:[poj1094](https://vjudge.net/problem/POJ-1094) - 最大流问题通常涉及到Ford-Fulkerson算法或者Dinic算法的应用。 4. **网络流** - 推荐题目:[poj3041](https://vjudge.net/problem/POJ-3041)、...
3. **网络流**:Max-flow算法,用于解决最大流问题(poj1094)。 4. **拓扑排序**:解决有向无环图的排序问题(poj3041, poj3020)。 5. **匹配算法**:如KM算法,用于解决二分图的最大匹配问题(poj1459, poj3436)...
- poj1094 - **应用场景**:适用于任务调度、依赖关系处理等问题。 #### 三、数据结构 **1. 字符串处理** - **定义**:字符串处理技术,包括字符串匹配算法等。 - **示例题目**: - poj1035 - poj3080 - poj...
4. **拓扑排序**:对有向无环图(DAG)的节点进行线性排序,如POJ1094。 5. **二分图的最大匹配**:使用匈牙利算法解决,如POJ3041和3020。 6. **最大流的增广路算法**:如KM算法,求解网络中的最大流量问题,如POJ...
* 拓扑排序:POJ1094 * 串算法:POJ1035、POJ3080、POJ1936 * 哈希表和二分查找等高效查找法:POJ3349、POJ3274、POJ2151、POJ1840、POJ2002、POJ2503 * 哈夫曼树:POJ3253 * 背包问题:POJ1837、POJ1276 * DP算法:...
* 拓扑排序:poj1094 * 二分图的最大匹配:匈牙利算法 + poj3041, poj3020 * 最大流的增广路算法:KM算法 + poj1459, poj3436 三、数据结构 * 串:poj1035, poj3080, poj1936 * 排序:快排、归并排、堆排 + poj...
7. 拓扑排序(poj1094) 8. 串(poj1035, poj3080, poj1936) 9. 哈希表和二分查找等高效查找法(poj3349, poj3274, POJ2151, poj1840, poj2002, poj2503) 10. 哈夫曼树(poj3253) 二、图算法 1. 度限制最小生成...
(4) 拓扑排序:poj1094 (5) 二分图的最大匹配:匈牙利算法 (6) 最大流的增广路算法:KM算法 三、数据结构 本部分涵盖了数据结构,包括串、排序、简单并查集的应用、哈希表和二分查找等高效查找法、哈夫曼树和堆、...
4. 拓扑排序:确定有向无环图的节点顺序,如poj1094。 5. 二分图的最大匹配:匈牙利算法解决分配问题,如poj3041、poj3020。 6. 增广路算法:KM算法用于求解最大流问题,如poj1459和poj3436。 三、数据结构 1. 串:...