由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来。

小Ho:小Hi,你这学期有选什么课么?

小Hi:挺多的,比如XXX1,XXX2还有XXX3。本来想选YYY2的,但是好像没有先选过YYY1,不能选YYY2。

小Ho:先修课程真是个麻烦的东西呢。

小Hi:没错呢。好多课程都有先修课程,每次选课之前都得先查查有没有先修。教务公布的先修课程记录都是好多年前的,不但有重复的信息,好像很多都不正确了。

小Ho:课程太多了,教务也没法整理吧。他们也没法一个一个确认有没有写错。

小Hi:这不正是轮到小Ho你出马的时候了么!

小Ho:哎??

我们都知道大学的课程是可以自己选择的,每一个学期可以自由选择打算学习的课程。唯一限制我们选课是一些课程之间的顺序关系:有的难度很大的课程可能会有一些前置课程的要求。比如课程A是课程B的前置课程,则要求先学习完A课程,才可以选择B课程。大学的教务收集了所有课程的顺序关系,但由于系统故障,可能有一些信息出现了错误。现在小Ho把信息都告诉你,请你帮小Ho判断一下这些信息是否有误。错误的信息主要是指出现了"课程A是课程B的前置课程,同时课程B也是课程A的前置课程"这样的情况。当然"课程A是课程B的前置课程,课程B是课程C的前置课程,课程C是课程A的前置课程"这类也是错误的。

提示:拓扑排序

输入

第1行:1个整数T,表示数据的组数T(1 <= T <= 5)
接下来T组数据按照以下格式:
第1行:2个整数,N,M。N表示课程总数量,课程编号为1..N。M表示顺序关系的数量。1 <= N <= 100,000. 1 <= M <= 500,000
第2..M+1行:每行2个整数,A,B。表示课程A是课程B的前置课程。

输出

第1..T行:每行1个字符串,若该组信息无误,输出"Correct",若该组信息有误,输出"Wrong"。

样例输入

2
2 2
1 2
2 1
3 2
1 2
1 3

样例输出

Wrong
Correct
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
using namespace std;
#define ll long longvector<int>to[100000+8];
queue<int>q;
priority_queue<int, vector<int>, greater<int> >you;int n, m, t, in[1000000+8], sign[1000000+8], du[1000000+8], si[1000000+8];int get(int miao)
{for(int i = 0; i <= miao; i++){du[i] = in[i];si[i] = sign[i];}int num = miao;while(!q.empty()){int t = q.front();num--;q.pop();for(int i = 0; i<to[t].size(); i++){du[to[t][i]]--;if(!du[to[t][i]] && !si[to[t][i]]){q.push(to[t][i]);si[to[t][i]] = 1;}}}return num;
}int main()
{int a, b;for(scanf("%d", &t);t--;){memset(in, 0, sizeof(in));memset(sign, 0, sizeof(sign));for(int i = 0; i <= n; i++)to[i].clear();scanf("%d%d", &n, &m);for(int i = 0; i<m; i++){scanf("%d%d", &a, &b);to[a].push_back(b);in[b]++;}for(int i = 1; i <= n; i++){if(!in[i] && !sign[i]){q.push(i);you.push(i);sign[i] = 1;}}if(get(n) == 0)printf("Correct\n");else printf("Wrong\n");}return 0;
}

转载于:https://www.cnblogs.com/RootVount/p/11201113.html

HihoCoder - 1174 拓扑排序·一相关推荐

  1. ACM: hihicoder #1174 : 拓扑排序·一 STL- queue

    #1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...

  2. hihoCoder 1175 拓扑排序

    hihoCoder 1175 拓扑排序 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了其中.从大家各自了解的情况中,小 ...

  3. HihoCoder - 1175 拓扑排序·二

    描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了其中.从大家各自了解的情况中,小Hi和小Ho整理得到了以下的信息: 校园 ...

  4. hihocoder 1343 : Stable Members【拓扑排序】

    hihocoder #1343:题目 解释: 一个学习小组,一共有N个学员,一个主管.每个学员都有自己的导师(一个或者多个),导师可以是其他学员也可以是主管. 每周学员都要把自己的学习报告和收到的报告 ...

  5. 题解报告:hihoCoder #1175:拓扑排序·二

    题目链接:https://hihocoder.com/problemset/problem/1175 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学 ...

  6. 【图论】有向无环图的拓扑排序

    1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...

  7. C#实现有向无环图(DAG)拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...

  8. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  9. usaco frame up(所有拓扑排序的输出)

    先根据图建图再拓扑排序. /** ID: jinbo wu TASK: frameup LANG:C++ */ #include<bits/stdc++.h> using namespac ...

最新文章

  1. LINUX利用Speedtest测速
  2. python中的datatype啥意思_案例中使用的是dataType,但是用在联系上面dataType不可用,必须改写成type:..._慕课问答...
  3. 安卓通讯录系统mysql_Android手机通讯录项目开发--联系人数据库contacts2.db介绍
  4. MyBatis映射文件(一)
  5. Python Flask实现查询和添加数据
  6. TIN与DEM的区别和联系
  7. 设计灵感|文字排版海报有多少种可能?
  8. Python 函数(三)
  9. 太秀了!单片机内置 ADC 实现高分辨率采样?
  10. python测试系列教程 —— 调试日志logging
  11. Windows phone 8.1 MessageBox 变了哦!
  12. CMOS中的 latch-up 闩锁效应、添加tap解决latch-up、使用combained area绘制TAP TAP的作用 IC后端版图【VLSI】
  13. Axure 8 注册码
  14. GoDaddy域名解析 到 阿里云域名DNS
  15. Python房贷计算器GUI(等额本息,等额本金)
  16. Win32 API 函数列表1(格式有点乱)
  17. 银行外包Java开发的一些感想2023.2.5
  18. sqlserver官网下载地址
  19. SQL审核 | SQLE-SQL审核平台体验报告
  20. Yarn的资源配置参数

热门文章

  1. 修改了一下voddown.py
  2. 构造函数的执行序列(读书笔记)
  3. Spring 注解编程之 AnnotationMetadata
  4. windows设置自动清理log
  5. thinkPHP5.0表单令牌使用
  6. swift版的GCD封装
  7. 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)
  8. css实现垂直居中的几种方式(布局常用)
  9. 读取excel文件内容代码
  10. [家里蹲大学数学杂志]第045期布朗运动矩的计算