问题:POJ1094
 
本题考查拓扑排序算法
 
拓扑排序:
 
1)找到入度为0的点,加入已排序列表末尾;
2)删除该点,更新入度数组。
 
循环1)2)直到
1. 所有点都被删除,则找到一个拓扑排序;
2. 或剩余结点中没有入度为0的点,则原图中必存在环。
 
 
本题算法
 
1.依次输入一组关系
 
对当前关系进行拓扑排序
1)若存在环,则无法排序
2)若根据当前关系,每次循环都唯一的确定入度为0的点,则存在排序
 
2.若输完所有的大小关系之后,仍然没有确定大小排序,也没有发现回环,则排序无法唯一确定
 
AC代码:
 //Memory: 224K        Time: 0MS
 #include <iostream>
 #include <cstdio>
 #include <cstring>
 #include <string>

 using namespace std;

 ;
 bool g[maxn][maxn];
 int indegree[maxn];
 int in[maxn];
 int vis[maxn];
 int flag;
 int n, m;
 int out[maxn];
 string s;
 int size;
 int ans;

 int topologicalSort()
 {
     memset(vis, , sizeof(vis));
     memcpy(in, indegree, sizeof(in));
     size = ;
     flag = ;
     while (size < n){
         ;
         int next;
         ; i < n; i++){
             if (vis[i]) continue;
             ) {
                 num++;
                 ) break;
                 next = i;
             }
         }
         ) ;
         else {
             out[size++] = next;
             vis[next] = ;
             ; i < n; i++) {
                 if ( g[next][i] && !vis[i] )
                     in[i]--;
             }
             )
                 flag = ;
         }
     }
     ) ;
     ;
 }

 int main()
 {
     while (cin >> n >> m && n) {
         memset(g, , sizeof(g));
         memset(indegree, , sizeof(indegree));
         ans = ;
         ; i < m; i++){
             cin >> s;
              ) continue;
             ] - ] - 'A']) {
                 g[s[] - ] - ;
                 indegree[s[] - 'A']++;
                 ans = topologicalSort();

                 ) {
                     cout <<  <<" relations." << endl;
                 }
                  ){
                     cout <<  << " relations: ";
                     ; i < n; i++)
                         cout << (char)(out[i] + 'A');
                     cout << "." << endl;
                 }
             }
         }

          )
             cout << "Sorted sequence cannot be determined." << endl;
     }
     ;
 }

POJ1094 拓扑排序的更多相关文章

  1. POJ1094——拓扑排序和它的唯一性

    比较模板的topological-sort题,关键在于每个元素都严格存在唯一的大小关系,而一般的拓扑排序只给出一个可能解,这就需要每趟排序的过程中监视它是不是总坚持一条唯一的路径. 算法导论里面的拓扑 ...

  2. poj1094拓扑排序

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29539   Accepted: 10 ...

  3. poj1094 拓扑排序(出度入度简单使用)

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37764   Accepted: 13 ...

  4. nyoj349 poj1094 Sorting It All Out(拓扑排序)

    nyoj349   http://acm.nyist.net/JudgeOnline/problem.php?pid=349poj1094   http://poj.org/problem?id=10 ...

  5. [poj1094]Sorting It All Out_拓扑排序

    Sorting It All Out poj-1094 题目大意:给出一些字符串之间的大小关系,问能否得到一个唯一的字符串序列,满足权值随下标递增. 注释:最多26个字母,均为大写. 想法:显然,很容 ...

  6. POJ1094 Sorting It All Out —— 拓扑排序

    题目链接:http://poj.org/problem?id=1094 Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Tot ...

  7. POJ1094 字母排序(拓扑排序)

    该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列.是典型的拓扑排序,但输出格式上确有三种形式: 1.该字母序列有序,并依次输出: 2.该序列不能判断是否有序: 3.该序列字母次 ...

  8. ACM/ICPC 之 拓扑排序范例(POJ1094-POJ2585)

    两道拓扑排序问题的范例,用拓扑排序解决的实质是一个单向关系问题 POJ1094(ZOJ1060)-Sortng It All Out 题意简单,但需要考虑的地方很多,因此很容易将code写繁琐了,会给 ...

  9. POJ - 1094 Sorting It All Out(拓扑排序)

    https://vjudge.net/problem/POJ-1094 题意 对于N个大写字母,给定它们的一些关系,要求判断出经过多少个关系之后可以确定它们的排序或者排序存在冲突,或者所有的偏序关系用 ...

随机推荐

  1. ACboy needs your help(HDU 1712 分组背包入门)

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. UVA 12169 Disgruntled Judge

    我该怎么说这道题呢...说简单其实也简单,就枚举模拟,开始卡了好久,今天看到这题没a又写了遍,看似会超时的代码交上去a了,果然实践是检验真理的唯一标准... #include <iostream ...

  3. sqlserver2008 case when then else end

    在写sql语句的时候,有时候我们需要对字段的只进行判断计算.查看了下相关文档在sql2012.sql2014里边可以使用  IIF 函数直接完成. 但是现在我需要在sql2008版本中完成最字段的计算 ...

  4. IOS 面试 --- 网络部分

    网络部分 3 做过的项目是否涉及网络访问功能,使用什么对象完成网络功能? 答案:ASIHTTPRequest与NSURLConnection 4 简单介绍下NSURLConnection类及+ sen ...

  5. [POJ] 3461 Oulipo [KMP算法]

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23667   Accepted: 9492 Descripti ...

  6. 将图片以Blob格式存入数据库,再通过Servlet显示到界面

    1:为了方便测试,直接将1.png图片存入到数据库中. public static void storePicBlog() throws FileNotFoundException, SQLExcep ...

  7. initEvent vs initMouseEvent

    var evt = document.createEvent("MouseEvents");evt.initMouseEvent("click", true, ...

  8. Compound class names are not supported. Consider searching for one class name and filtering the results

    原文地址:http://stackoverflow.com/questions/20361643/compound-class-names-are-not-supported-consider-sea ...

  9. UESTC_王之盛宴 2015 UESTC Training for Graph Theory<Problem K>

    K - 王之盛宴 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  10. vs2008工程配置

    一.添加H文件目录 依次点击“项目——配置属性——C/C++——常规”, 在“附加包含目录”中加入H文件所在的文件夹.(即项目所要用到的所有.h文件目录都要加进去)   二.添加LIB目录 1)依次点 ...