首页 > TAG信息列表 > indeg
拓扑排序
判断拓扑排序有入度表方式和深度优先(锁路径)无回路方式 其中入度表的能通过栈完成所有无前驱节点访问,也能通过队列广度优先完成访问,本质上只是存储无前驱节点的容器 构建对应拓扑序列序列只能用入度表的方式,按顺序解锁无前驱节点 bool TopologicalSort(Graph G){ staLeetcode 210. 课程表 II (建图拓扑排序)
每一个课程看作一个点,先修课程连出一条边指向后续课程,整体形成一个图。我们需要对这个图进行拓扑排序,如果图中存在环,则不存在拓扑序。拓扑排序最直接的方法是BFS。时间复杂度是O(n + m) class Solution { private: // 存储有向图 vector<vector<int>> edges; // 存CF1385E【Directing Edges】 (拓扑排序)
CF2000分图论 题意:给你一个n个顶点m条边的图,其中一些边没有方向,其余边有方向,让你对每一条没有方向的边赋一个方向,要求最终图不能形成自环。(没有重边) 题解:首先先看有方向的边所构成的图原本是否已经成环,如果成环的话必定直接输出NO,不成环的话则必定输出YES。统计每个点的indeg,进行Codeforces 909E(Coprocessor,双队列维护)
题意:给出n个待处理的事件(0 ~n-1),再给出了n个标(0表示只能在主处理器中处理这个事件,1表示只能在副处理器中处理这个事件),处理器每次能处理多个任务。每个事件有关联,如果一个任务要在副处理器上执行,那它所依赖的任务要么已执行完了,要么和它一起在这个副处理器上同时执行。问副处理Labeling Balls POJ - 3687 优先队列 + 反向拓扑
优先队列 + 反向拓扑 //#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;const int maxn = 1e5 + 7;int n, m;vector<int>G[maxn];int inDeg[maxn];i拓扑排序
拓扑排序 以入度为0的做起点 void top_sort(){ queue<int>top; for(int i=1;i<=n;i++){ if(!indeg[i]){ top.push(i); break; } } std::vector<int> TOP; while(!top.empty()){ int T=top.front(); top.pop(); indeg[T]=-1; TOP.p