先修课程指引

题目描述

学生在选修课程时,往往会要求先修一些前置课程。例如学习大数据原理,需要先修计算机导论、操作系统、数据结构等课程,学习大数据技术应用,还要掌握一门面向对象程序设计语言、数据库、计算机网络、WEB开发等知识。因此,需要为学生提供先修课程指引。

现在用一个有向图表示各门课程之间的先修和后修关系,要求对有向图进行拓扑排序,生成拓扑有序序列。该序列作为学生先修课程的指引。

–算法说明–
假设用邻接矩阵表示有向图,拓扑排序过程如下
1、在有向图中选一个没有前驱的顶点,且输出该顶点
a)提示:若第i个顶点没有前驱,则邻接矩阵中的第i列全为??。
2、从图中删除该顶点和所有以它为尾的弧
a)提示:删除第i个顶点的弧,即将第i行全部设为??
3、重复步骤1和2,直到所有顶点输出为止

–程序要求–
必须通过拓扑排序算法来生成拓扑有序序列。 不允许使用第三方对象或函数实现本题的要求

输入

第一行输入t表示有t门课程,即有向图有t个顶点,顶点编号对应数组下标从0开始
接着输入t行,每行t个数据,表示邻接矩阵,每行数据之间用单个空格隔开

输出

输出1行,表示拓扑有序序列 每行输出数据之间用单个空格隔开,末尾数据后面无空格

样例输入

5
0 1 0 1 1
0 0 1 1 0
0 0 0 0 1
0 0 1 0 0
0 0 0 0 0

样例输出

0 1 3 2 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值