拓扑排序
来源:互联网 发布:哈希map java 编辑:程序博客网 时间:2024/06/10 15:51
这两天看了拓扑排序,水了若干题,记录一发。
大概就是记录有向图,和每个点的入度,每次取出一个入度为零的点,并修改以该点为起点的有向边的终点的入度。不断重复以上步骤,直到:
1.取完所有点。此时完成排序。
2.没有入度为0的点,但还有点没取。此时说明图中存在环,非DAG。
自写渣渣模板如下:
int G[maxn][maxn];int ans[maxn];int indegree[maxn];bool vis[maxn];int n;void toposort(){ memset(vis,false,sizeof(vis)); for(int st=0;st<n;st++) { int rec; for(int i=0;i<n;i++) { if(!vis[i]&&!indegree[i]) { rec=i; } } vis[rec]=true; for(int j=0;j<n;j++) { if(G[rec][j])indegree[j]--; } } return;}
其间可以统计入度为零的点的个数,当且仅当每次入度为零的点唯一,拓扑序唯一。(poj1094)
同时,若要得出所有而非字典序第一的拓扑序,可以将toposort改成递归形式(类似dfs的回溯),每次将所有入度为零的点都讨论一遍即可。(poj1270)
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 视音频、流媒体、图像编码标准综述
- Codeforces Round #361 (Div. 2)D. Friends and Subsequences
- 我的家教——维格的作文
- ios 本地通知与消息推送
- div布局:相对定位、绝对定位、固定定位
- 拓扑排序
- linux 安装cvuqdisk包
- ios集成第三方登陆访问scheme提示不能查询某scheme
- mongodb 安装
- 找两个链表的共同点
- 数据库详解
- Java编程思想之容器目录
- 流媒体技术简介
- 学校oj题目二(枚举+求模+比较)