zoukankan      html  css  js  c++  java
  • POJ 3687 拓扑排序

    一个比较慢的算法。
    反向拓扑,从大到小枚举。

    #include <cstdio>
    #include <cstring>
    using namespace std;
    int cas,n,m,cnt,v[205],ans[205];
    bool map[205][205];
    int main()
    {
        scanf("%d",&cas);
        while(cas--)
        {
            memset(map,0,sizeof(map));
            memset(v,0,sizeof(v));
            memset(ans,0,sizeof(n));
            scanf("%d%d",&n,&m);
            cnt=n;
            for(int i=1;i<=m;i++)
            {
                int F,T;
                scanf("%d%d",&F,&T);
                if(!map[T][F])
                    map[T][F]=1,v[F]++;
            }
            for(int i=n;i>=1;i--)
                for(int j=n;j>=1;j--)//当前可选的最大标签
                    if(!v[j])
                    {
                        v[j]--;
                        cnt--;
                        ans[j]=i;
                        for(int k=n;k>=1;k--)
                            if(map[j][k])
                                v[k]--;
                        break;
                    }
            if(cnt)
                printf("-1
    ");
            else
            {
                for(int i=1;i<=n;i++)
                    printf("%d ",ans[i]);
                printf("
    ");
            }
        }
    }
  • 相关阅读:
    C++基础学习1-编译与链接
    html学习
    使用BP拦截POST请求包
    2019.9.17
    搭建LAMP环境
    2019.9.16
    2019.9.12
    2019.9.11
    手脱无名壳tslgame_rl
    一款自制壳的脱壳
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532490.html
Copyright © 2011-2022 走看看