zoukankan      html  css  js  c++  java
  • 百度之星热身赛-1001(dfs拓扑排序)

    题意:作为年度优秀魔法学员的奖赏,哈利得到了一台具有魔力的计算机。这台计算机一旦开始处理某个任务,就会一直处理到这个任务结束为止(所以你可以认为它是单线程的)。有一天,这台计算机得到了n个任务要处理,分别标号1到n。这n个任务之间又有一些依赖关系,假如存在依赖关系(a, b),那么要处理a任务,必须先将b任务完成。现在哈利得到了所有的这些依赖关系,一共m个。他想知道,这台计算机能否完成所有的任务。

    思路:一开始是判断该图中是否存在环,但是WA,换成拓扑排序,A了;

     1 #include <iostream>
     2 #include <cmath>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <cstdlib>
     6 #include <string>
     7 #include <sstream>
     8 #include <algorithm>
     9 #define Max 2147483647
    10 #define INF 0x7fffffff
    11 #define N 2010
    12 #define ll long long
    13 #define mem(a,b) memset(a,b,sizeof(a))
    14 #define repu(i, a, b) for(int i = (a); i < (b); i++)
    15 const double PI=-acos(-1.0);
    16 using namespace std;
    17 int vis[N];
    18 int topo[N],t;
    19 int n,G[N][N];
    20 bool dfs(int u)
    21 {
    22     vis[u] = -1;
    23     repu(v,1,1+n)
    24     if(G[u][v])
    25     {
    26         if(vis[v] < 0)
    27             return false;
    28         else if(!vis[v] && !dfs(v))
    29             return false;
    30     }
    31     vis[u] = 1;
    32     topo[--t] = u;///记录路径
    33     return true;
    34 }
    35 
    36 bool toposort()
    37 {
    38     t = n;
    39     memset(vis,0,sizeof(vis));
    40     repu(u,1,1+n)
    41     if(!vis[u])
    42         if(!dfs(u))
    43             return false;
    44     return true;
    45 }
    46 
    47 int main()
    48 {
    49     int m,a,b;
    50     while(cin>>n)
    51     {
    52         cin>>m;
    53         memset(G,0,sizeof(G));
    54         repu(i,0,m)
    55         {
    56             cin>>a>>b;
    57             G[a][b] = 1;
    58         }
    59         if(toposort())cout<<"YES
    ";
    60         else
    61             cout<<"NO
    ";
    62     }
    63     return 0;
    64 }
    拓扑排序
  • 相关阅读:
    block和delegate的区别
    iOS真机测试友盟碰到错误linker command failed with exit code 1 (use -v to see invocation) 百度地图的检索失败 sqlite 错误码
    iOS国际化多语言设置
    获取本机ip地址
    iOS-Senior19-FMDB第三方应用
    iOS-Senior17-CoreAnimation动画
    iOS-Senior18-CocoPods的安装步骤
    iOS-Senior17-UIView动画
    iOS-Senior17-菊花风火轮(代码)
    iOS-Senior17-Gif动画图片(代码)
  • 原文地址:https://www.cnblogs.com/ACMERY/p/4521575.html
Copyright © 2011-2022 走看看