zoukankan      html  css  js  c++  java
  • Ordering Tasks

    这个拓扑算法,就是注意顺序,因为自己还没怎么看懂,之后会进行补充和修改,然后表示完全不知道字典序的问题,最开始题目都读不懂,所以我也没啥好说的,直接借鉴了书上的代码什么的。

    #include<stdio.h>  
    #include<stdlib.h>  
    #include<string.h>  
    #include<math.h>  
    #define max 100+5  
    int c[max],topo[max],t,n,G[max][max];  
    int dfs(int u)  
    {  
        int v;  
        c[u] = -1;  
        for(v = 1; v <= n; v++)  
            if(G[u][v])  
            {  
                if(c[v] < 0) return 0;  
                else if(!c[v] && !dfs(v)) return 0;  
            }  
        c[u] = 1;  
        topo[--t] = u;  
        return 1;  
    }  
    int toposort()  
    {  
        int i;  
        t = n;  
        memset(c,0,sizeof(c));  
        for(i = 1; i <= n; i++)  
            if(!c[i] && !dfs(i))  
                    return 0;  
        return  1;  
    }  
    int main()  
    {  
    #ifdef state  
        freopen("sample.txt","r",stdin);  
    #endif  
        int m,i;  
        while(scanf("%d%d",&n,&m),n || m)  
        {  
            int u,v;  
            memset(G,0,sizeof(G));  
            for(i = 0 ; i < m ; i++)  
            {  
                scanf("%d%d",&u,&v);  
                G[u][v] = 1;  
            }  
            if(toposort())  
            {  
                for(i = 0; i < n-1; i++)  
                    printf("%d ",topo[i]);  
                printf("%d
    ",topo[i]);  
            }  
        }  
        return 0;  
    }
    

      

  • 相关阅读:
    代码对齐[UVA1593]
    数数字
    子序列
    细菌培养
    内联函数那些事情
    一个简单的问题
    头文件重复包含问题的一点笔记
    mapreduce 对文件分词读取
    hadoop hive-2.3.5安装
    hadoop sqoop 实例
  • 原文地址:https://www.cnblogs.com/yintoki/p/5693069.html
Copyright © 2011-2022 走看看