博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拓扑排序()
阅读量:6649 次
发布时间:2019-06-25

本文共 1318 字,大约阅读时间需要 4 分钟。

题目链接:

讲解视频链接:

输入

第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"。

样例输入

22 21 22 13 21 21 3

样例输出

WrongCorrect
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 #define maxn 500000 7 vector
vc[maxn]; 8 int n, m; 9 int dis[maxn];10 bool toupu()11 {12 queue
q;13 while (!q.empty()) q.pop();14 for (int i = 1; i <= n; i++) if (!dis[i]) q.push(i);15 int ans = 0;16 while (!q.empty())17 {18 int temp = q.front(); q.pop();19 ans++;20 for (int i = 0; i < vc[temp].size(); i++)21 {22 if (--dis[vc[temp][i] ]== 0) q.push(vc[temp][i]);23 }24 }25 if (ans == n) return true;26 return false;27 }28 int main()29 {30 int t;31 cin >> t;32 while (t--)33 {34 cin >> n >> m;35 for (int i = 0; i < n; i++) vc[i].clear();36 memset(dis, 0, sizeof(dis));37 for (int i = 0; i < m; i++)38 {39 int a, b;40 cin >> a >> b;41 vc[a].push_back(b);42 dis[b]++;43 }44 if (!toupu()) cout << "Wrong" << endl;45 else cout << "Correct" << endl;46 }47 return 0;48 }

 

转载于:https://www.cnblogs.com/kangdong/p/9125588.html

你可能感兴趣的文章
Oracle 双机热备:Oracle dataguard 和Oracle rac的区别和联系
查看>>
如何只显示不同字段值的行?
查看>>
挂载ISO文件
查看>>
DataGridView 经典用法总结(一)
查看>>
Java并发显式锁和显式条件队列
查看>>
云OS可国产替代
查看>>
try-catch 能否监听多线程中的错误?
查看>>
Android使用Token 实现单点登录
查看>>
模拟器可以,但是真机却不行
查看>>
CSS: hover选择器的使用
查看>>
Java消息服务
查看>>
Grid列拖拽、列选择、显示行号
查看>>
自定义的allocator
查看>>
浅谈CSRF漏洞
查看>>
JS----基本数据类型
查看>>
明天考前突击
查看>>
Android中的Handler的机制与用法详解
查看>>
【算法学习笔记】18.暴力求解法06 隐式图搜索2 八数码问题 未启发
查看>>
「小程序JAVA实战」运行微信官方demo(四)
查看>>
jqGrid基本用法与示例
查看>>