zoukankan      html  css  js  c++  java
  • HDU1285-确定比赛名次(拓扑+优先队列)

    对于拓扑排序,每次能入队的只有入度为0的点,所以用优先队列即可。
    以及,第一组数据日常卡OJ,这组数据跳了一个点,我的程序这个版本也过不了(其实写了另一个版的),稍微改改更正确。

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=510;
    vector<int> vec[maxn];
    int indeg[maxn],seq[maxn],N,M,tot=0;
    
    void topo()
    {
        tot=0;
        priority_queue<int,vector<int>,greater<int> > pq;
        for (int i=1;i<=N;i++) {
            if (indeg[i]==0) {
                pq.push(i);
            }
        }
        while (!pq.empty()) {
            int u=pq.top();
            pq.pop();
            seq[tot++]=u;
            for (int i=0;i<vec[u].size();i++) {
                if (--indeg[vec[u][i]]==0) {
                    pq.push(vec[u][i]);
                }
            }
        }
    }
    
    int main()
    {
    
        while (scanf("%d%d",&N,&M)!=EOF) {
            for (int i=0;i<=N;i++) {
                vec[i].clear();
            }
            memset(indeg,0,sizeof(indeg));
            int x,y;
            for (int i=0;i<M;i++) {
                scanf("%d%d",&x,&y);
                vec[x].push_back(y);
                indeg[y]++;
            }
            topo();
            for (int i=0;i<tot-1;i++) {
                printf("%d ",seq[i]);
            }
            printf("%d
    ",seq[tot-1]);
        }
        return 0;
    }
    /*
    8 6
    1 7
    2 4
    3 5
    7 8
    4 8
    5 8
    
    7 6
    1 2
    2 3
    3 4
    6 2
    5 3
    7 5
    */
    
  • 相关阅读:
    [转]老男孩读pcie
    nand
    面试题目汇总
    redis的tcp-backlog配置
    Redis 3.0.4 sentinels
    Redis 3.0.4 客户端
    Redis 3.0.4 事件驱动
    Redis 3.0.4 AOF持久化
    Redis 3.0.4 数据库
    Redis 3.0.4 RDB持久化
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/12328876.html
Copyright © 2011-2022 走看看