拓扑排序的一道水题
来源:互联网 发布:c语言入门经典第六版 编辑:程序博客网 时间:2024/05/18 18:03
Ordering Tasks
题目大意:假设有n个变量,还有m个二元组(u,v)分别表示变量u小于v。那么,输出从小到大排列起来的变量。
分析:将n个点根据所给条件建一个图,然后查找入度为零的顶点,输出之后将这个点与这个点与别的点之间的连接都删除,再搜索下一个入度为0的节点,最后输出结果:
#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <queue>using namespace std;int block[105][105];int id[105];queue<int> la;int main(){ int m,n; while(cin>>n>>m&&n) //m可以为零 { memset(block,0,sizeof(block)); memset(id,0,sizeof(id)); for(int i=0; i<m; i++) { int a,b; cin>>a>>b; block[a][b]=1; //建图 id[b]++; //各节点的入度 } for(int i=1; i<=n; i++) { if(id[i]==0) la.push(i); } int count=0; //count计算输出的节点的个数 while(!la.empty()) //将!la.empty() 改成count<=n时会WA,不知道为什么,求指点 { int v=la.front(); la.pop(); if(count==0) cout<<v; else cout<<" "<<v; count++; for(int k=1; k<=n; k++) { if(block[v][k]!=0&&--id[k]==0) la.push(k); } } cout<<endl; } return 0;}
阅读全文
2 0
- 拓扑排序的一道水题
- 拓扑排序的一道题
- poj2367一道利用dfs退栈求拓扑排序的简单题
- UVA 196 一道好玩的输入处理+拓扑排序题
- hau 1825 第一道拓扑排序题
- hdu2647_逃课a掉一道很DT的拓扑排序
- 一道可爱的排序题
- 【uva-10305】Ordering Tasks (拓扑排序中最简单的一道
- 【uva-200】Rare Order(拓扑排序过的第一道)
- Hdu 的一道水题 排序(hdu 1.3.6)
- 拓扑排序题集【夏天的风】
- 拓扑排序的模板
- 图的拓扑排序
- 简单的拓扑排序
- 图的拓扑排序
- 图的拓扑排序
- 图的拓扑排序
- 拓扑排序的应用
- OSG(OpenSceneGraphic) 渲染引擎架构--整体认识
- java读取xml文件的四种方法
- Apex学习:一个计划任务与批处理的Demo
- Nginx学习笔记(二) 负载均衡
- 空字符串+""等操作结果
- 拓扑排序的一道水题
- Android Fragment 的使用,一些你不可不知的注意事项
- HDU6034-Balala Power!
- xlistview加多条目
- 关于安卓底部栏包引入问题解决
- 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
- 原型和原型链
- 安装好了MarkdownPad2 ,打开总出现错误,这是什么原因,该如何解决啊?
- UVA784--dfs