拓扑排序算法
来源:互联网 发布:万游网络传奇 编辑:程序博客网 时间:2024/06/08 06:32
用indegree来记录每个点的入度,每次输出入度为0的点,然后继续往后找。
#include <iostream>#include <queue>#include <cstdio>#include <cstring>using namespace std;int map[101][101];int indegree[101];int n,m;bool topoSort(){ queue<int> Q; int nodeCount=0; for(int i=1;i<=n;i++) { if(!indegree[i]) { Q.push(i);//入度为0的顶点进队 } } nodeCount=0; while(!Q.empty()) { int k=Q.front(); Q.pop(); cout<<k<<" "; nodeCount++;//统计入度为0的节点 for(int j=1;j<=n;j++) { if(map[k][j]!=-1) { indegree[j]--; if(!indegree[j]) { Q.push(j); } } } } if(nodeCount<n) {//有环,拓扑排序失败 cout<<"There is cycle on the graph.\n"; return false; } return true;}int main(){ /* input test 4 6 1 2 1 1 3 1 2 3 1 3 4 1 2 4 1 1 2 1 */ // freopen("in.txt","r",stdin); memset(map,-1,sizeof(map)); int a,b,c; scanf("%d %d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d %d %d",&a,&b,&c); map[a][b]=c; indegree[b]++; } topoSort(); return 0;}
- 贪婪算法--- 拓扑排序
- 贪婪算法--- 拓扑排序
- 拓扑排序算法
- 拓扑排序算法
- 拓扑排序算法
- 【算法导论】拓扑排序
- 【算法导论】拓扑排序
- 拓扑排序算法
- 拓扑排序算法
- 拓扑排序算法
- 拓扑排序算法
- 算法 拓扑排序
- 算法 拓扑排序
- 拓扑排序算法
- 算法摘记 拓扑排序
- 拓扑排序算法
- 【数据结构】拓扑排序算法
- 拓扑排序算法模板
- android 拍照上传照片
- 几种函数调用方式
- linux网络相关设置
- android上传图片至服务器
- 软件测试面试题及解析(十一)
- 拓扑排序算法
- Codeforces 217A. Ice Skating 搜索
- 开始学习SQLite
- NSInvocaion用来替代performSelector传多个参数时,以及根据函数签名来动态调用时
- android 拍照上传照片(新)
- php中的参数传递问题
- POJ 1436 Horizontally Visible Segments
- MyEclipse如何设置自动提示
- 简单线程池