小白+拓扑排序的模板
来源:互联网 发布:python sha1 函数 编辑:程序博客网 时间:2024/06/14 05:28
///拓扑排序,#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#include<vector>#define LL long long#define INF 0x3f3f3f3f#define mod 1000000007const int maxn=1e5+5;using namespace std;///c[u]=0表示从未访问过///c[u]=1 表示已经访问过,并且还递归访问过它的所有子孙(即dfs(u)曾被调用过,并已返回///c[u]=-1 表示正在访问vector<int>G[maxn];int c[maxn];int topo[maxn],t=0,n=0,m=0;bool dfs(int u){ c[u]=-1; int d=G[u].size(),v=0; for(int i=0;i<d;i++){ v=G[u][i]; if(c[v]<0) return false;///存在有项环,失败退出。 else if(!c[v]&&!dfs(v)) return false; } c[u]=1;topo[t--]=u;///放拓扑的序列 return true;}bool toposort(){ t=n; memset(c,0,sizeof(c)); for(int u=1;u<=n;u++){///节点从1开始 if(!c[u]){ if(!dfs(u)) return false; } } return true;}int main(){ int a=0,b=0; scanf("%d%d",&n,&m); while(m--){ scanf("%d%d",&a,&b); G[a].push_back(b); } toposort(); for(int i=1;i<=n;i++){ printf("%d\n",topo[i]); } return 0;}
0 0
- 小白+拓扑排序的模板
- 拓扑排序的模板
- 用链表写的拓扑排序模板
- 简单的拓扑排序模板
- 拓扑排序及模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序-模板
- 拓扑排序toposort 模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序算法模板
- 拓扑排序【模板】
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 拓扑排序模板
- 【千里码】隐写术-1
- 山东省赛Identifiers 之getchar()的使用
- 初级iOS程序员找工作的技巧
- Java基础-数组的基本操作(2)
- 深入理解where 1=1的用处
- 小白+拓扑排序的模板
- javascript 判断 ios 的版本号
- 小白笔记--------------------构造最长公共子序列
- 小白+dijkstra写的多简洁
- 打包自己的framework(Xcode7&OSX10.11)兼容各种cpu类型
- debugger
- ccf+字符串的处理,就是string的使用
- 空荡的数据中心,120种妙用!
- [设计]用户设计10原则