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

    这个题是个模板题,可以直接用拓扑排序的模板来做,

    AC代码

    #include <stdio.h>
    #include<iostream>
    #include <string.h>
    using namespace std;
    const int N = 1000;
    int n, m;
    int Map[N][N];
    int topNum[N];
    bool toposort(int *ret)
    {
        int Indegree[N];
        memset(Indegree, 0, sizeof(Indegree));
        int k = 0;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                Indegree[i] += Map[j][i];//计算入度,没有边的时候Map[j][i]为0
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= n; j++)
            {
                if (Indegree[j] == 0)
                {
                    --Indegree[j];
                    ret[k++] = j;
                    for (int t = 1; t <= n; t++)
                        if (Map[j][t])
                            Indegree[t]--;
                    break;
                }
            }   
                
        }
        if (k == n)
            return true;
        return false;
    }
    int main()
    {
        int a, b;
        while (cin >> n >> m)
        {
            memset(Map, 0, sizeof(Map));
            for (int i = 0; i < m; i++)
            {
                cin >> a >> b;
                Map[a][b] = 1;
            }
            toposort(topNum);   
            for (int i = 0; i < n; i++)
            {
                if (i == n - 1)
                    printf("%d
    ", topNum[i]);
                else
                    printf("%d ", topNum[i]);
            }
        }
        
    
        return 0;
    }
    View Code
  • 相关阅读:
    meanshift聚类的实现
    birch聚类算法
    DBSCAN聚类算法的实现
    discrete adaboost的C++实现
    kd-tree的实现
    红黑树的实现——插入
    24位位图转8位灰度图
    将RGB数据写入BMP位图文件
    splay树的实现
    AVL树的实现
  • 原文地址:https://www.cnblogs.com/Howe-Young/p/4372943.html
Copyright © 2011-2022 走看看