主题链接:http://pat.zju.edu.cn/contests/ds/6-06

假定一个project项目由一组子任务构成,子任务之间有的能够并行运行。有的必须在完毕了其他一些子任务后才干运行。

“任务调度”包含一组子任务、以及每一个子任务能够运行所依赖的子任务集。

比方完毕一个专业的全部课程学习和毕业设计能够看成一个本科生要完毕的一项project,各门课程能够看成是子任务。

有些课程能够同一时候开设,比方英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不能够同一时候开设,由于它们有先后的依赖关系。比方C程序设计和数据结构两门课,必须先学习前者。

可是须要注意的是,对一组子任务,并非随意的任务调度都是一个可行的方案。

比方方案中存在“子任务A依赖于子任务B,子任务B依赖于子任务C,子任务C又依赖于子任务A”,那么这三个任务哪个都不能先运行,这就是一个不可行的方案。你如今的工作是敲代码判定不论什么一个给定的任务调度是否可行。

输入格式说明:

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

输出格式说明:

假设方案可行。则输出1,否则输出0。

例子输入与输出:

序号 输入 输出
1
  1. 4
  2. 0
  3. 1 1
  4. 1 1
  5. 2 2 3
  1. 1
2
  1. 12
  2. 0
  3. 0
  4. 2 1 2
  5. 0
  6. 1 4
  7. 1 5
  8. 2 3 6
  9. 1 3
  10. 2 7 8
  11. 1 7
  12. 1 10
  13. 1 7
  1. 1
3
  1. 4
  2. 1 4
  3. 2 1 4
  4. 1 2
  5. 1 3
  1. 0

PS:

用拓扑排序,如有节点不能被删除则有环!

代码例如以下:

  1. #include <cstdio>
  2. #include <cstring>
  3. #define MAXN 517
  4. int G[MAXN][MAXN];//路径
  5. int in_degree[MAXN];//入度
  6. int ans[MAXN];
  7. int n, m, x, y;
  8. int i, j;
  9. int flag = 0;
  10. void toposort()
  11. {
  12. flag = 0;
  13. for(i = 1; i <= n; i++)
  14. {
  15. for(j = 1; j <= n; j++)
  16. {
  17. if(G[i][j])
  18. {
  19. in_degree[j]++;
  20. }
  21. }
  22. }
  23. for(i = 1; i <= n; i++)//从最小的開始寻找,
  24. {
  25. //这样保证了有多个答案时序号小的先输出
  26. int k = 1;
  27. while(in_degree[k] != 0)//寻找入度为零的点
  28. {
  29. k++;
  30. if(k > n)
  31. {
  32. flag = 1;
  33. break;
  34. }
  35. }
  36.  
  37. ans[i] = k;
  38. in_degree[k] = -1;
  39. //更新为-1,后边检測不受影响,相当于删除节点
  40. for(int j = 1; j <= n; j++)
  41. {
  42. if(G[k][j])
  43. in_degree[j]--;//相关联的入度减1
  44. }
  45. }
  46. }
  47.  
  48. void init()
  49. {
  50. memset(in_degree,0,sizeof(in_degree));
  51. memset(ans,0,sizeof(ans));
  52. memset(G,0,sizeof(G));
  53. }
  54.  
  55. int main()
  56. {
  57. while(~scanf("%d",&n))
  58. {
  59. init();
  60. for(i = 1; i <= n; i++)
  61. {
  62. scanf("%d",&m);
  63. for(int j = 0; j < m; j++)
  64. {
  65. scanf("%d",&y);
  66. G[i][y] = 1;
  67. }
  68. }
  69. toposort();
  70. if(flag)
  71. {
  72. printf("0\n");
  73. }
  74. else
  75. printf("1\n");
  76. }
  77. return 0;
  78. }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

6-06. 理性任务调度(25)(拓扑排序啊 ZJU_PAT)的更多相关文章

  1. hdu 3342 Legal or Not(拓扑排序) HDOJ Monthly Contest – 2010.03.06

    一道极其水的拓扑排序……但是我还是要把它发出来,原因很简单,连错12次…… 题意也很裸,前面的废话不用看,直接看输入 输入n, m表示从0到n-1共n个人,有m组关系 截下来m组,每组输入a, b表示 ...

  2. 2018.11.06 bzoj1093: [ZJOI2007]最大半连通子图(缩点+拓扑排序)

    传送门 先将原图缩点,缩掉之后的点权就是连通块大小. 然后用拓扑排序统计最长链数就行了. 自己yyyyyy了一下一个好一点的统计方法. 把所有缩了之后的点都连向一个虚点. 然后再跑拓扑,这样最后虚点的 ...

  3. 大数据工作流任务调度--有向无环图(DAG)之拓扑排序

    点击上方蓝字关注DolphinScheduler(海豚调度) |作者:代立冬 |编辑:闫利帅 回顾基础知识: 图的遍历 图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点 ...

  4. BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...

  5. 【BZOJ-1565】植物大战僵尸 拓扑排序 + 最小割

    1565: [NOI2009]植物大战僵尸 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1972  Solved: 917[Submit][Statu ...

  6. Bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合图,拓扑排序

    题目: http://cojs.tk/cogs/problem/problem.php?pid=410 410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:p ...

  7. 拓扑排序的 +Leapms 线性规划模型

    知识点 拓扑排序 拓扑排序的+Leapms模型 无圈有向图 一个图G(V,E), 如果边有向且不存在回路,则为无圈有向图.在无圈有向图上可以定义拓扑排序.下图是一个无圈有向图的例子. 拓扑排序 给定一 ...

  8. 拓扑排序(Topological Sorting)

    一.什么是拓扑排序 在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列.且该序列必须满足下面两个 ...

  9. 2200: [Usaco2011 Jan]道路和航线 (拓扑排序+dijstra)

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

随机推荐

  1. Sqlite 扩展功能 GET_PHONEBOOK_INDEX

    在联系人数据库设计中遇到了这个函数,晚上找了半天没找到答案. GET_PHONEBOOK_INDEX This function will produce a normalized upper cas ...

  2. eclipse重构详解(转)

    重构是对软件内部结构的一种调整,目的是在不改变软件行为的前提下,提高其可理解性,降低其修改成本.开发人员可以使用一系列重构准则,在不改变软件行为的前提下,调整软件的结构. 有很多种原因,开发人员应该重 ...

  3. Android Wear 数据类型和接口的发送和同步数据概述

    Android Wear数据层API,这是google play service部分,通信信道,以你的手持设备和耐磨应用. Api它包含一系列数据对象,可以让系统通过监控和通知行app重要的事件数据层 ...

  4. Tomcat7.0设置虚拟文件夹

    (1)眼下,我们的网站网站都是放在默认的文件夹下:tomcat/webapps/下的.可是,在某种情况下.我们须要把网站放到其它的文件夹,比方:tomcat所在磁盘的空间不足: 或者为了项目的统一管理 ...

  5. FZUOJ Problem 2178 礼品配送

    Problem 2178 礼物分配 题目链接: Click Here~ Problem Description 在双胞胎兄弟Eric与R.W的生日会上,他们共收到了N个礼物,生日过后他们决定分配这N个 ...

  6. 使用jni技术进行android应用签名信息核查及敏感信息保护

           近期业余时间写了一款应用<摇啊摇>,安智.安卓.360等几个应用商店已经陆续审核通过并上线.从有想法到终于将产品做出来并公布,断断续续花了近二个半月的业余时间,整体来讲还算顺 ...

  7. HDU 4337 King Arthur&#39;s Knights 它输出一个哈密顿电路

    n积分m文章无向边 它输出一个哈密顿电路 #include <cstdio> #include <cstring> #include <iostream> usin ...

  8. Mvc后台接收 参数

    @Html.TextAreaFor(m => m.Emps, new { @class = "easyui-validatebox", @style = "heig ...

  9. 开源Math.NET基础数学类库使用(16)C#计算矩阵秩

    原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  10. WPF 3D:MeshGeometry3D的定义和光照

    原文 WPF 3D:MeshGeometry3D的定义和光照 由于WPF计算光照会根据整个平面的方向向量,所以如果在不同面上使用同一个点可能会达到不同的光照效果.让我们用不同的定义Mesh的方法来演示 ...