zoukankan      html  css  js  c++  java
  • hdu-4857-逃生-拓扑排序

    拓扑排序。

    反向建边。

    为了序号小的尽量在前面,我们每次都取出入度为0的最大的点。

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<stdlib.h>
    #include<vector>
    #include<queue>
    #include<string.h>
    #include<math.h>
    using namespace std;
    struct list
    {
        int u,v,w;
        int next;
    }edge[110000];
    int head[33000];
    int nums;
    void add(int u,int v,int w)
    {
        edge[nums].u=u;
        edge[nums].v=v;
        edge[nums].w=w;
        edge[nums].next=head[u];
        head[u]=nums++;
    }
    int du[33000];
    void init()
    {
        memset(head,-1,sizeof(head));
        nums=1;
        memset(du,0,sizeof(du));
    }
    priority_queue<int>que;
    vector<int>vec;
    int n;
    void dos()
    {
        vec.clear();
        while(!que.empty())que.pop();
        for(int i=1;i<=n;i++)
        {
            if(du[i]==0)que.push(i);
        }
        while(!que.empty())
        {
            int x=que.top();
            que.pop();
            for(int i=head[x];i!=-1;i=edge[i].next)
            {
                int y=edge[i].v;
                du[y]--;
                if(du[y]==0)
                {
                    que.push(y);
                }
            }
            vec.push_back(x);
        }
        for(int i=n-1;i>=0;i--)
        {
            if(i!=n-1)printf(" ");
            printf("%d",vec[i]);
        }
        cout<<endl;
    }
    int main()
    {
        int T,m,a,b;
        scanf("%d",&T);
        while(T--)
        {
            init();
            scanf("%d%d",&n,&m);
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d",&a,&b);
                add(b,a,1);
                du[a]++;
            }
            dos();
        }
        return 0;
    }
    
    
    
    
    
    
    
    
    
    
    


  • 相关阅读:
    spark源码阅读之network(2)
    LoadRunner使用问题
    IDEA小技巧:添加代码快捷方式
    ByteUnit
    利用python列出当前目录下的所有文件
    python识别图片中的信息
    2019年3月2日-小雨.md
    2019年3月1日-日记
    2019年2月11日-日记
    2019年2月10日-日记
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4039717.html
Copyright © 2011-2022 走看看