pku openjudge 拓扑排序
来源:互联网 发布:qq留言软件 编辑:程序博客网 时间:2024/06/05 07:39
http://dsa.openjudge.cn/graph/0719/
0719:拓扑排序
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 10000ms
- 内存限制:
- 1000kB
- 描述
给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前
- 输入
- 若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号
- 输出
- 若干个空格隔开的顶点构成的序列(用小写字母)
- 样例输入
6 81 21 31 43 23 54 56 46 5
- 样例输出
v1 v3 v2 v6 v4 v5
- 查看
- 提交
- 统计
- 提问
//北大数算课程上主要讲的拓扑排序使用邻接链表实现的,但如果空间要求没有非常高,邻接矩阵的表示方法依然是一个不错的选择
//为了节省很时间不去每次都把矩阵遍历一遍,用一个一位数组记录一个点的入度,每次按顺序找到一个入读为0的点,将入读修改为-1,并且修改以这个点为起始点的终点的入读和并清零矩阵上表示这条边的元素 再从头进行判断,直到找不到一个入读为0的点为止,为什么从头进行判断,这会费一些时间 ,不过能够更方便的满足小的节点在前面输出的条件
#include<iostream>#include<stdio.h>#include<cstring>using namespace std;#define maxn 500bool data[maxn][maxn];int ind[maxn];int v,a;int main(){int s,d;memset(data,0,sizeof(data));memset(ind,0,sizeof(ind));scanf("%d%d",&v,&a);for(int i=0;i<a;i++){scanf("%d%d",&s,&d);data[s][d]=1;ind[d]++;}for(int i=1;i<=v;i++){ if(ind[i]==0){printf("v%d ",i);ind[i]--;for(int j=1;j<=v;j++){if(data[i][j]){data[i][j]=0;ind[j]--;}}i=0;}}return 0;}
0 0
- pku openjudge 拓扑排序
- openjudge 拓扑排序
- Openjudge-拓扑排序
- pku 1270 Following Orders(拓扑排序)
- pku 3687 Labeling Balls 逆序拓扑排序
- pku 1270 Following Orders DFS+拓扑排序
- pku 1128 Frame Stacking(dfs+拓扑排序)
- pku 1094 Sorting It All Out(拓扑排序)
- pku 1094 Sorting It All Out 拓扑排序
- Openjudge切割回文(pku t1)
- pku openjudge 题目 新丛林道路
- pku openjudge 百炼 前缀中的周期
- 【openjudge】字符串排序
- openjudge 距离排序
- openjudge DNA排序
- 【Openjudge】单词排序
- 【Openjudge】DNA排序
- 拓扑排序
- 关闭浏览器的监听
- AS3使用PrintJob实现单页或多页打印
- MIPI 接口知识点
- 批量rebuild索引
- Blocks: Conclusion
- pku openjudge 拓扑排序
- Android 开发中使用 SQLite 数据库
- struts1与struts2区别
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- source insight快捷键及使用技巧
- action与表单的对接
- 混音算法的学习与研究
- android登陆接口调试
- MKNetWorkKit使用方法