拓扑排序模板
来源:互联网 发布:数据库升级策略 编辑:程序博客网 时间:2024/06/18 14:58
kahn算法优先队列模板
从入度考虑
int indegree[MAXN];int topo[MAXN];int graph[MAXN][MAXN]; //邻接矩阵int index, n;struct cmp1 {bool operator ()(int &a, int &b) {return a>b;//最小值优先}};void toposort(){priority_queue<int,vector<int>,cmp1>q;for (int i = 1; i <= n; i++){if (!indegree[i])q.push(i);}index = 0;while (!q.empty()){int temp= q.top();q.pop();topo[index++] = temp;for (int i = 1; i <= n; i++){if (graph[temp][i]){indegree[i]--;if (!indegree[i])q.push(i);}}}}
DFS 实现
从出度为0考虑
bool dfs(int u){vis[u] = -1;//-1用来表示顶点u正在访问 for (int i = 0; i < graph[u].size(); i++){if (vis[graph[u][i]] == -1)//表示这个点进入了两次,肯定出现了环 return false;else if (vis[graph[u][i]] == 0){if (!dfs(graph[u][i]))return false;}}vis[u] = 1;topo[cnt++] = u;//放到结果数组里,输出的时候记得倒序输出,(回溯的原因) return true;}bool toposort(int n){memset(vis, 0, sizeof(vis));for (int i = 1; i <= n; i++){if (!vis[i]){if (!dfs(i)) return false;//huan }}return true;}
阅读全文
0 0
- 拓扑排序的模板
- 拓扑排序及模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序-模板
- 拓扑排序toposort 模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序算法模板
- 拓扑排序【模板】
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- maven 引入外部jar包的几种方式
- 迁移学习-Transfer Learning
- List Set Map简单理解
- Spring Boot 系列(1) 微服务介绍
- NOIP 提高组 2005
- 拓扑排序模板
- 漫谈程序员系列:一张图道尽程序员的出路 (转载程序视界)
- 二叉搜索树(BST)与平衡二叉树(AVL树)专题
- idea常用设置
- Unity优化之GC——合理优化Unity的GC
- cocos creator 学习(九)讲web项目部署到服务器
- LeetCode——344. Reverse String(字符串反转)
- 百练 二叉树的操作(二叉树)
- 19+ JavaScript 常用的简写技巧