九度:1449<拓扑排序><DAG>
来源:互联网 发布:中国的中产阶级 知乎 编辑:程序博客网 时间:2024/05/23 18:50
http://ac.jobdu.com/problem.php?pid=1449
使用邻接矩阵实现方便。
// 1449// 拓扑排序,小号尽量在前// #include <stdio.h>#define SIZE 500+10int edge[SIZE][SIZE]; //edge[], 用来存放下一个节点的编号bool mark[SIZE];int Q[SIZE]; //存放输出队列void Init(int n){for(int i=1; i<=n; i++){mark[i] = false;for(int j=1; j<= n; j++){edge[i][j] = -1;}}}void Input(int m){int p1, p2;while(m-->0){scanf("%d%d", &p1, &p2);edge[p1][p2] = 1;// x->y}}int main(){#ifdef ONLINE_JUDGE#elsefreopen("E:\\in.txt", "r", stdin);//freopen("E:\\out.txt", "w", stdout);#endifint n, m;while(scanf("%d%d", &n, &m) != EOF){if(n == 0 && m ==0){break;}Init(n);Input(m);/// 核心部分int num=0;while(num < n){int i, newP = -1;for(i=1; i<=n; i++){if( mark[i] == true){continue;}int j;for(j=1; j<=n; j++){if(edge[j][i] != -1){break;}}if(j == n+1){newP = i;break;}}if(newP != -1){Q[num++] = newP;mark[newP] = true;int j;for(j=1; j<=n ;j++){edge[newP][j]=-1;}}newP=-1;}int j;for(j = 0; j<n; j++){printf("%d", Q[j]);if(j != n-1){printf(" ");}else{puts("");}}}//whilereturn 0;}
0 0
- 九度:1449<拓扑排序><DAG>
- DAG图与拓扑排序
- LightOJ1003-Drunk-拓扑排序,DAG
- [容易] DAG的拓扑排序
- 九度:1448<拓扑排序>
- 拓扑排序--九度1448
- 九度1449:确定比赛名次(拓扑排序)
- DAG图的拓扑排序 python
- 【BZOJ4562】[Haoi2016]食物链【DP】【DAG】【拓扑排序】
- Python DAG—归简法—拓扑排序
- UVA自由组合 DAG+拓扑排序
- 九度OJ 1448 拓扑排序问题
- 拓扑排序--九度1450.产生冠军
- 有向无环图(DAG)拓扑排序的两种方法
- 拓扑排序+有向无环图(DAG)的检测
- 算法: 有向无环图(DAG)的拓扑排序
- 数据结构(19)--DAG应用之AOE网的拓扑排序
- DAG图与拓扑排序 (士兵排队问题)
- Python reduce
- ftp
- 九度:1448<拓扑排序>
- ssh意外
- 记录浏览过的商品
- 九度:1449<拓扑排序><DAG>
- JAVA学习第2篇:JDK安装完毕的配置及配置的目的
- ActivityManager: Warning: Activity not started, its current task has been br
- Java中用正则表达式判断日期格式是否正确
- Linux中断处理流程
- 实体类与Map互转工具类
- response.sendRedirect()跳转
- C# Linq的简单使用
- 我的java学习日记(1)