zoukankan      html  css  js  c++  java
  • UVa 10305 Ordering Tasks

      有n件事事情要做,它们有m个完成先后顺序,求出一个它们完成的先后顺序,即拓扑排序。

      套用代码即可,不过开始的时候while内条件写的是 while(scanf("%d%", &n, &m) != EOF && n &&m)  结果WA了,怎么都想不明白怎么会错了,后来发现会有n!=0&&m=0的情况出现,不过这样的话它们不是相互独立了吗?当时想当然的就没考虑这种情况,以后还是老老实实地按照题目给的要求吧...

      代码如下:

    View Code
     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int maxn = 110;
     5 int n, m;
     6 int G[maxn][maxn], topo[maxn];
     7 int c[maxn], t;
     8 
     9 bool dfs(int u)
    10 {
    11     c[u] = -1;
    12     for(int v = 1; v <= n; v++)
    13         if(G[u][v])
    14         {
    15             if(c[v] < 0)   return false;
    16             else if(!c[v] && !dfs(v))   return false;
    17         }
    18     c[u] = 1;
    19     topo[--t] = u;
    20     return true;
    21 }
    22 
    23 bool toposort()
    24 {
    25     t = n;
    26     memset(c, 0, sizeof(c));
    27     for(int u = 1; u <= n; u++)
    28         if(!c[u])
    29             if(!dfs(u))  return false;
    30     return true;
    31 }
    32 
    33 int main()
    34 {
    35 #ifdef LOCAL    
    36     freopen("in", "r", stdin);
    37 #endif
    38     while(scanf("%d%d", &n, &m) != EOF )
    39     {
    40         if(!m && !n)   break;
    41         int u, v;
    42         memset(G, 0, sizeof(G));
    43         while(m--)
    44         {
    45             scanf("%d%d", &u, &v);
    46             G[u][v] = 1;
    47         }
    48         toposort();
    49         for(int i = 0; i < n; i++)
    50         {
    51             printf("%s", i ? " " : "");
    52             printf("%d", topo[i]);
    53         }
    54         printf("\n");
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    Hibernate总结(二)---hibernate中的各种映射
    调度子系统7_负载均衡(四)
    (网络层: 二 ) 网络层提供的服务(基于无连接的服务)
    我的2013——一名计算机教师的高开低走
    文艺小青年
    图解RabbitMQ
    解决Mac下idea运行速度慢
    较主流的消息队列的比较与选型
    Ubuntu下RabbitMQ安装
    linux守护进程与&的区别
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3047565.html
Copyright © 2011-2022 走看看