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

    思路:找入度为0的点->删边 ->重复直接找不到入度为0的点。

    #include<iostream>

    #include<vector>

    using namespace std;

     

    const int MAXN=500+10;

    int indegree[MAXN];

    vector<int>V[MAXN];

     

    void init(int n){                               //初始化

        memset(indegree,0,sizeof(indegree));

        for(int i=1;i<=n;i++){

            V[i].clear();

        }

    }

     

    int findZeroDegree(int n){        //找入度为0的点

        for(int i=1;i<=n;i++){

            if(indegree[i]==0){

                return i;

            }

        }

        return -1;

    }

     

    void cutDegree(int node){                  //相关点的入度-1

        for(int i=0; i<V[node].size(); i++){

            indegree[V[node][i]]--;

        }

    }

     

    void topSort(int n){

        int node;

        int save[MAXN];                       //存储关键路径

        int k=0;

        for(int cnt=0; cnt<n; cnt++){

            node = findZeroDegree(n);

            indegree[node] = -1;              //标志已经用过的顶点

            save[k++] = node;                 //存储找到的顶点

            cutDegree(node);

        }

        for(int i=0;i<n-1;i++){

            cout<<save[i]<<" ";

        }

        cout<<save[n-1]<<endl;

    }

  • 相关阅读:
    selenium模块---操作浏览器
    mock模块学习---模拟接口返回数据
    fiddler配置和使用
    css 08-CSS属性:定位属性
    css 07-浮动
    css 06-CSS盒模型详解
    css 05-CSS样式表的继承性和层叠性
    css 04-CSS选择器:伪类
    css 03-CSS样式表和选择器
    css 02-CSS属性:背景属性
  • 原文地址:https://www.cnblogs.com/cbyniypeu/p/3388794.html
Copyright © 2011-2022 走看看