zoukankan      html  css  js  c++  java
  • Poj(3687),拓扑排序,

    题目链接:http://poj.org/problem?id=3687

    题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小。(先保证1号球最轻,其次2号……)

    如果从前扫的话,当遇到入度为0的点,却不一定是1,这里,我参考了金海峰的分析,从重的开始扫,给最重的附上n,n-1... ...,再去掉重的点连的边。

    #include <stdio.h>
    #include <string.h>
    
    #define MAXN 205
    
    bool g[MAXN][MAXN];
    int in[MAXN];
    int vis[MAXN];
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            memset(g,false,sizeof(g));
            memset(vis,false,sizeof(vis));
            memset(in,0,sizeof(in));
    
            int n,m;
            scanf("%d%d",&n,&m);
            for(int i=0;i<m;i++)
            {
                int a,b;
                scanf("%d%d",&a,&b);
                if(!g[b][a])
                    in[a] ++;
                g[b][a]=true;
            }
    
            int ans[MAXN];
            bool flag = true;
            for(int i=n;i>=0;i--)
            {
                int q = -1;
                for(int j=n;j>=0;j--)
                {
                    if(!vis[j]&&in[j]==0)
                    {
                        q = j;
                        break;
                    }
                }
                if(q==-1)
                {
                    flag = false;
                    break;
                }
                vis[q] = true;
                ans[q] = i;
                for(int j=1;j<=n;j++)
                {
                    if(g[q][j])
                        in[j] --;
                }
            }
    
            if(flag)
            {
                for(int i=1;i<n;i++)
                    printf("%d ",ans[i]);
                printf("%d
    ",ans[n]);
            }
            else puts("-1");
    
        }
        return 0;
    }
  • 相关阅读:
    jar 反编译工具
    SpringBoot 中注解方式的拦截过滤
    jetty 启动项目在pom.xml 的配置
    java Exception 处理汇总
    mysql-覆盖索引
    程序员为何如此累
    启动centos 不带桌面
    Linux 和 Vim 常用命令整理
    How to Use tomcat on Linux
    Mac Book 问题汇集
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5741636.html
Copyright © 2011-2022 走看看