7-6 任务调度的合理性 (25 分)

假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。

比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。

但是需要注意的是,对一组子任务,并不是任意的任务调度都是一个可行的方案。比如方案中存在“子任务A依赖于子任务B,子任务B依赖于子任务C,子任务C又依赖于子任务A”,那么这三个任务哪个都不能先执行,这就是一个不可行的方案。你现在的工作是写程序判定任何一个给定的任务调度是否可行。

输入格式:

输入说明:输入第一行给出子任务数N(≤100),子任务按1~N编号。随后N行,每行给出一个子任务的依赖集合:首先给出依赖集合中的子任务数K,随后给出K个子任务编号,整数之间都用空格分隔。

输出格式:

如果方案可行,则输出1,否则输出0。

输入样例1:

12
0
0
2 1 2
0
1 4
1 5
2 3 6
1 3
2 7 8
1 7
1 10
1 7

输出样例1:

1

输入样例2:

5
1 4
2 1 4
2 2 5
1 3
0

输出样例2:

0
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;const int MAXV = 1005;
vector<int> G[MAXV];
int n, m, inDegree[MAXV];bool topologicalSort(){int num = 0;   //记录拓扑序列的顶点数 queue<int> q;for(int i = 1; i <= n; i++){if(inDegree[i] == 0)   // 如果顶点i的入度为 0 入队 q.push(i);}while(!q.empty()){int u = q.front();q.pop();for(int i = 0; i < G[u].size(); i++){int v = G[u][i];  //u的后继结点v inDegree[v]--;        //顶点v的入度-1 if(inDegree[v] == 0){  //如果顶点v的入度为 0 入队 q.push(v);}}G[u].clear();  //清空定顶点u的所有出边 num++;  //加入拓扑序列的定点数+1 }if(num == n) return true;    //拓扑序列的顶点数为n,说明拓扑排序成功 else   return false;   //加入拓扑序列的顶点数小于n,说明失败
}int main (){cin >> n;memset(inDegree, 0, sizeof(inDegree));int x, y;for(int i = 1; i <= n; i++){cin >> x;inDegree[i] = x;for(int j = 0; j < x; j ++){cin >> y;G[y].push_back(i);}}if( topologicalSort() ){cout << "1" << endl;}elsecout << "0" << endl;return 0;
}

任务调度的合理性 (25 分)相关推荐

  1. 【未完成】7-12 任务调度的合理性 (25 分)

    7-12 任务调度的合理性 (25 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行."任务调度"包括一组子任务.以及每 ...

  2. 7-34 任务调度的合理性 (25 分)(思路加详解+兄弟们冲呀)

    一:题目 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行."任务调度"包括一组子任务.以及每个子任务可以执行所依赖的子任务集 ...

  3. 7-10 任务调度的合理性 (8 分)

    7-10 任务调度的合理性 (8 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行."任务调度"包括一组子任务.以及每个 ...

  4. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...

  5. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  6. PTA 03-树1 树的同构 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构   (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...

  7. 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)

    1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the order ...

  8. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)

    1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...

  9. 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)

    1149 Dangerous Goods Packaging (25 分) When shipping goods with containers, we have to be careful not ...

最新文章

  1. ehcache导致Tomcat重启出错
  2. [C#学习笔记]C#中的decimal类型——《CLR via C#》
  3. 【总结整理】JQuery基础学习---DOM篇
  4. 机器学习该如何应用到量化投资系列(二)
  5. 解决ionic切换路由后,不继承tab路由,没有返回按钮问题
  6. 无法定位软件包 docker-ce_自媒体!做自媒体账号需要注意什么?定位很重要
  7. Open3d之计算点云凸包
  8. pytorch调用tensorboard方法尝试
  9. 为什么至少三个哨兵_入职第一周,组长让我把部门redis服务搞成哨兵模式...慌-龙跃十二...
  10. iOS直播点赞动画,iOS直播心型点赞动画
  11. poi合并单元格后居中
  12. 研究生新生要怎么看论文?
  13. 美国车联网(V2X)发展现状与反思
  14. 白马非马的面向对象分析
  15. 拼多多电商外部工具(浏览器插件)
  16. 松原计算机等级考试试题,2019年上半年吉林省松原市计算机等级考试注意事项...
  17. 三输入,八输出译码器门级实现
  18. 淘宝app详情接口,淘宝详情页接口,商品信息查询,商品详细信息接口,h5详情,宝贝详情页接口,商品属性接口,
  19. C#生成随机数的三种方法
  20. 虫堡大作战java_《百战天虫:虫堡大作战》详细攻略大全

热门文章

  1. Python库turtle的趣味性用法,欢迎来品尝。
  2. 入门算法题——数学篇(一)
  3. Vue的渐进式怎么理解
  4. 第三方支付线上产品分析
  5. 万人总结的软件测试面试简历及软件测试面试题
  6. CASS中基于高程点并生成等高线的方法
  7. tcsc工作原理matlab仿真,基于Matlab的TCSC建模与仿真研究.doc
  8. 谈谈mq消息消费的几种方式
  9. 用c++写一个简单的钓鱼(集卡)程序
  10. 描述性统计分析 | 直方图