John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task is only possible if other tasks have already been executed.

Input The input will consist of several instances of the problem. Each instance begins with a line containing two integers, 1 ≤ n ≤ 100 and m. n is the number of tasks (numbered from 1 to n) and m is the number of direct precedence relations between tasks. After this, there will be m lines with two integers i and j, representing the fact that task i must be executed before task j. An instance with n = m = 0 will finish the input.

Output For each instance, print a line with n integers representing the tasks in a possible order of execution.

Sample Input 5 4 1 2 2 3 1 3 1 5 0 0

Sample Output 1 4 2 5 3

题意:就是给你几组任务,给出了任务的先后顺序,求出他们的执行顺序

拓扑排序就是用来解决这类排序问题的... 先构造出一个图,用dfs递归实现来遍历

自己敲的时候,wa了n次...然后Baidu了一下,发现自己的错误和网友的错误惊人的相似(QAQ),判断m n是否为0的时候应该用 m||n 来确定两个都为0而不是 m&&n !!

#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
 + ;

int a[maxn][maxn];
int c[maxn];
int topo[maxn];
int n, m, t;

bool dfs(int u){
    c[u] = -;
    ; v<=n; v++){
        if(a[u][v]){
            ) return false;
            else if(!c[v] && !dfs(v)) return false;
        }
    }
    c[u] = ;
    topo[--t] = u;
    return true;
}
bool topo_sort(){
    t = n;
    memset(c, , sizeof(c));
    ; u<=n; u++){
        if(!c[u]){
            if(!dfs(u)) return false;
        }
    }
    return true;
}

int main(){
    int j, k;
     && (n || m )){
        memset(a, , sizeof(a));
        ; i<m; i++){
            cin >> j >> k;
            a[j][k] = ;
        }
        if(topo_sort()){
            ; i<n; i++){
                ) cout << topo[i];
                else cout << " " << topo[i];
            }
            cout << endl;
        }
        else
            cout << "No" << endl;

    }

    ;
}

图——拓扑排序(uva10305)的更多相关文章

  1. HDU4857——逃生(反向建图+拓扑排序)(BestCoder Round #1)

    逃生 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会 ...

  2. POJ3687——Labeling Balls(反向建图+拓扑排序)

    Labeling Balls DescriptionWindy has N balls of distinct weights from 1 unit to N units. Now he tries ...

  3. Bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合图,拓扑排序

    题目: http://cojs.tk/cogs/problem/problem.php?pid=410 410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:p ...

  4. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

  5. 拓扑排序--UVa10305

    题目 Output: standard output Time Limit: 1 second Memory Limit: 32 MB John has n tasks to do. Unfortun ...

  6. poj 3683 2-sat建图+拓扑排序输出结果

    发现建图的方法各有不同,前面一题连边和这一题连边建图的点就不同,感觉这题的建图方案更好. 题意:给出每个婚礼的2个主持时间,每个婚礼的可能能会冲突,输出方案. 思路:n个婚礼,2*n个点,每组点是对称 ...

  7. HDU 5438 拓扑排序+DFS

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  8. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  9. Paint the Grid Again (隐藏建图+优先队列+拓扑排序)

    Leo has a grid with N × N cells. He wants to paint each cell with a specific color (either black or ...

随机推荐

  1. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

  2. 模仿password输入框

    function hiddenPass(event) { var password0 = document.getElementById("password0"); var pas ...

  3. 套接字Socket

    TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的.UDP( ...

  4. 黑马程序员:Java编程_动态代理

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 长沙人从长沙的代理商手中买宏基电脑和直接跑到宏基总部买电脑,最终的主体业务目标有 ...

  5. Hibernate3回顾-1-部署

    web备份版本,详见doc版本. 一.背景(部署简单回顾) 我们知道,一个Hibernate快速上手的简单流程是这样. 1引入对应jar包. 中间涉及log4的jar包和配置,略. 2 实体类 pac ...

  6. SpringBoot配置属性之Server

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  7. Clean Code第二章&lt;命名&gt;

    1.命名要有意义 错误写法 正确写法 2.某些构造函数可以提供有意义的静态方法去实现

  8. poj 2965 The Pilots Brothers&#39; refrigerator枚举(bfs+位运算)

    //题目:http://poj.org/problem?id=2965//题意:电冰箱有16个把手,每个把手两种状态(开‘-’或关‘+’),只有在所有把手都打开时,门才开,输入数据是个4*4的矩阵,因 ...

  9. 一个free的问题

    请看下面的代码: #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sy ...

  10. HTTP 错误 404.3 - Forbidden

    在iis中能够浏览所有扩展名的文件时,IIS MIME的 映射 您只能在故障排除过程中将通配符映射添加到 IIS MIME 映射中,以作为一种临时解决方案.确定缺少 MIME 类型是问题的原因后,请删 ...