TopologicalSort

const int Max=100;
vector<int> graph[Max];                                //邻接表实现图。
int indegree[Max]= {0};

bool TopologicalSort(int n) {
    queue<int> node;
    for(int i=0; i<n; i++) {                                             
        if(indegree[i]==0) {
            node.emplace(i);
        }
    }
    int n1=0;
    while(!node.empty()) {
        int u=node.front();
        node.pop();                                                             //删掉度为0的点。
        n1++;
        for(int i=0; i<graph[u].size(); i++) {
            int v=graph[u][i];
            indegree[v]--;                                                        //删掉以度为0为起点的边。
            if(indegree[v]==0) {
                node.emplace(v);
            }
        }
    }
    return n==n1;
}
全部评论
void TopologicalSort(int n){ vector<int> answer; priority_queue<int,vector<int>,greater<int> > q; for(int i=1;i<=n;i++){ if(indegree[i]==0){ q.emplace(i); } } while(!q.empty()){ int u=q.top(); answer.emplace_back(u); q.pop(); for(int i=0;i<graph[u].size();i++){ int v=graph[u][i]; indegree[v]--; if(indegree[v]==0){ q.emplace(v); } } } for(int i=0;i<answer.size();i++){ cout<<answer[i]<<" "; } cout<<endl; return ; }
点赞 回复 分享
发布于 2022-10-14 17:00 福建

相关推荐

09-08 17:17
同济大学 Java
狗不理fe:里面的人劝一句,别来虾,我们部门24校招生淘汰率30%,还有一些人说有一年保护期,不可能!!!
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务