POJ1094 Sorting It All Out
来源:互联网 发布:波兰 知乎 编辑:程序博客网 时间:2024/06/06 19:09
拓扑排序题,每加入一条边,判断
(1)形成有向环,退出
(2)形成唯一拓扑顺序,退出
(3)加入所有边后,仍无法确定唯一拓扑顺序
注意判断的优先级!!!
#include <cstdio>#include <cstring>#include <queue>using namespace std;int n,m,nn,ans,flag;int g[30][30],d[30];bool vis[30],qt;char str[5],order[30];int topo(){int td[30],k=0,no=0;for (int i=0;i<n;i++) td[i]=d[i];queue<int> Q;for (int i=0;i<n;i++)if (td[i]==0) Q.push(i);while (!Q.empty()){if (Q.size()!=1) no=1;int u=Q.front(); Q.pop();order[k++]=u+'A';for (int v=0;v<n;v++){if (u==v) continue;if (g[u][v]){td[v]--;if (td[v]==0) Q.push(v);}}}if (k<nn) return -1;if (no||k<n) return 0;order[k]='\0';return 1;}int main(){while (scanf("%d%d",&n,&m)==2 && (n||m)){memset(g,0,sizeof(g));memset(d,0,sizeof(d));memset(vis,0,sizeof(vis));nn=0; qt=0;for (ans=1;ans<=m;ans++){scanf("%s",str);if (qt) continue;if (!vis[str[0]-'A']) {vis[str[0]-'A']=1; nn++;}if (!vis[str[2]-'A']) {vis[str[2]-'A']=1; nn++;}if (g[str[0]-'A'][str[2]-'A']==0){g[str[0]-'A'][str[2]-'A']=1; d[str[2]-'A']++;}flag=topo();if (flag==1) {printf("Sorted sequence determined after %d relations: %s.\n",ans,order); qt=1;}if (flag==-1) {printf("Inconsistency found after %d relations.\n",ans); qt=1;}}if (qt==0) puts("Sorted sequence cannot be determined.");}return 0;}
第一次写紧缩风格的代码,总觉得好丑= =
- POJ1094 Sorting It All Out
- poj1094 Sorting It All Out
- poj1094 Sorting It All Out
- poj1094 Sorting It All Out
- Sorting It All Out poj1094
- 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
- Sorting It All Out-POJ1094
- 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 (拓扑排序)
- (多年后回头学习c#)被遗忘的世界 一 匿名类 与 扩展方法
- kruskal模板
- 字符串匹配算法实现(两个字符串中含有的字符和个数都相同)
- 编译原理first集合和follow集合
- 蓝牙技术组网
- POJ1094 Sorting It All Out
- Android教程(四)-- TextView的使用
- 父类不可以产生对象,而子类可以的设计方式
- 最小生成树
- 如何成为一名职业的独立游戏开发者
- CSDN网站升级啦?
- OGNL和struts2的# %{}
- Android之Handler用法总结
- spring PropertyPlaceholderConfigurer