poj 1094 Sorting it all out
来源:互联网 发布:网络配音cv大神 编辑:程序博客网 时间:2024/05/18 11:05
这题很奇怪,在zoj上一直过不了,不知道问题出现在哪里。不过在poj上过了
#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <vector>using namespace std;int kcount[26];//入边表,记录定点的入度int temp[26];//就是kcount的拷贝,在拓扑排序时用于修改char relation[3],seq[26];//relation用于读入对象的关系,seq用于储存得到的序列bool alpha[26];//alpha用于检查对象是否检查过int n, m;vector< vector< char > >v;//一般思路可以先建好图再进行拓扑排序,但是本题要求在第几个关系式下可以判断出来,因此要输入一次,就进行一次拓扑排序;//拓扑排序时,用了一个flag标志变量,如果int TopSort( int s ){ int i, j, r, cnt;//r表示得到的序列中元素个数,cnt表示定点入度为零的个数 bool flag;//flag标志变量,查看拓扑排序结束后,是否能够得到序列 r = 0, cnt = 0; for(i = 0; i < n; ++i) temp[i] = kcount[i]; flag = 1; while(s--) { cnt = 0; for(i = 0; i < n; ++i) { if(temp[i] == 0) j = i, cnt++; } if(cnt >= 1) { //cnt = 1;表明就有一个入度为零的定点,那么该定点就位于序列的最前端 if(cnt > 1) flag = 0; int h = v[j].size(); for(i = 0; i < h; ++i) temp[ (int)v[j][i] ]--; seq[r++] = (char)(j + 'A'); temp[j] = -1; seq[r] = 0; } else if(cnt == 0) return -1; } if(flag) return r; else return 0;}int main(){ int i, t, k, c; int determed; char tmp[26]; while(1) { cin>>n>>m; if(n == 0 && m == 0) break; memset(kcount, 0, sizeof(kcount)); memset(alpha, false, sizeof(alpha)); v.clear(), v.resize(n); c = 0, determed = 0; for(i = 0; i < m; ++i) { cin>>relation; kcount[ relation[2] - 'A' ]++; v[ relation[0] - 'A' ].push_back( relation[2] - 'A' ); if( !alpha[ relation[0] - 'A' ] ) c++, alpha[ relation[0] - 'A' ] = true; if( !alpha[ relation[2] - 'A' ] ) c++, alpha[ relation[2] - 'A' ] = true; if( determed == 0) { t = TopSort( c ); if( t == -1 ) { determed = -1; k = i+1; } else if(t == n) { determed = 1; k = i+1; strcpy(tmp, seq); } } } if(determed == 1) cout<<"Sorted sequence determined after "<<k<<" relations: "<<tmp<<"."<<endl; else if(determed == 0) cout<<"Sorted sequence cannot be determined."<<endl; else cout<< "Inconsistency found after "<<k<< " relations."<<endl; } return 0;}
- poj 1094 Sorting It All Out
- poj 1094 Sorting It All Out
- poj 1094 Sorting It All Out
- [POJ] 1094 Sorting It All Out
- POJ-1094 Sorting It All Out
- POJ-1094-Sorting It All Out
- POJ 1094 Sorting It All Out
- POJ 1094 Sorting It All Out
- POJ 1094 Sorting It All Out
- poj-1094-Sorting It All Out
- POJ 1094 Sorting It All Out
- poj 1094 Sorting It All Out
- POJ 1094 Sorting It All Out
- POJ-1094-Sorting It All Out
- poj 1094 Sorting It All Out
- poj 1094 Sorting It All Out(图论)
- poj 1094 Sorting It All Out
- POJ 1094 Sorting It All Out
- 给想转行做DBA的朋友一些劝告
- 写程序之余,笑一笑----程序员的一些幽默
- C C++ 获取当前系统时间到字符串
- Android Developers:使用<include/>重用布局
- height: 100%的作用
- poj 1094 Sorting it all out
- Foreign Language_english_语法分析_1
- 来美国大半年了,又开始想家了。
- jAVA反射机制
- 第七周上机实践项目——给定两个正整数,求出两数的正差值并输出
- Linq使用总结
- uva10154 - Weights and Measures
- 三阶魔方入门手法
- (android实战)破解apk(转载)