博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3342 Legal or Not 拓排序
阅读量:4930 次
发布时间:2019-06-11

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

Legal or Not

Problem Description

ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When someone has questions, many warm-hearted cows like Lost will come to help. Then the one being helped will call Lost "master", and Lost will have a nice "prentice". By and by, there are many pairs of "master and prentice". But then problem occurs: there are too many masters and too many prentices, how can we know whether it is legal or not?

We all know a master can have many prentices and a prentice may have a lot of masters too, it's legal. Nevertheless,some cows are not so honest, they hold illegal relationship. Take HH and 3xian for instant, HH is 3xian's master and, at the same time, 3xian is HH's master,which is quite illegal! To avoid this,please help us to judge whether their relationship is legal or not. 
Please note that the "master and prentice" relation is transitive. It means that if A is B's master ans B is C's master, then A is C's master.

Input

The input consists of several test cases. For each case, the first line contains two integers, N (members to be tested) and M (relationships to be tested)(2 <= N, M <= 100). Then M lines follow, each contains a pair of (x, y) which means x is y's master and y is x's prentice. The input is terminated by N = 0.

TO MAKE IT SIMPLE, we give every one a number (0, 1, 2,..., N-1). We use their numbers instead of their names.

Output

For each test case, print in one line the judgement of the messy relationship.

If it is legal, output "YES", otherwise "NO".

Sample Input

3 2

0 1

1 2

2 2

0 1

1 0

0 0

Sample Output

YES

NO


拓扑排序,如果可以排序,那就YES,否则NO:

代码:

View Code
1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int map[105][105]; 7 int indegree[105]; //每个点的入度 8 9 10 int Topo(int n)11 {12 int i,j,ans;13 for(i=0;i
0) //删除入度为0的点时也要对与它相连的每个点的入度减一29 {30 indegree[j]--;31 }32 }33 }34 return 1;35 }36 37 int main()38 {39 int n,m,p,q;40 int i,j,flag;41 while(1)42 {43 scanf("%d%d",&n,&m);44 if(n==0 && m==0) break;45 memset(map,0,sizeof(map));46 memset(indegree,0,sizeof(indegree));47 for(i=0;i

 

 

转载于:https://www.cnblogs.com/shenshuyang/archive/2012/08/03/2621826.html

你可能感兴趣的文章
有表格的九九乘法表
查看>>
WPF 4 DataGrid 控件(自定义样式篇)
查看>>
改善C#程序的建议1:非用ICloneable不可的理由
查看>>
PHP的错误机制总结
查看>>
window.location
查看>>
C#实现万年历(农历、节气、节日、星座、星宿、属相、生肖、闰年月、时辰)
查看>>
使用Flex图表组件
查看>>
官网分析(英雄传奇)(如何设计网站前端)
查看>>
SSH Key的生成和使用(for git)
查看>>
html5--6-52 动画效果-过渡
查看>>
调查表与调查结果分析
查看>>
Windows系统下安装MySQL详细教程(命令安装法)
查看>>
PHP实用小程序(六)
查看>>
PDFsharp Samples
查看>>
django-cms 代码研究(八)app hooks
查看>>
peewee Model.get的复杂查询
查看>>
IE浏览器兼容性设置的一些问题
查看>>
SQL Server复制入门(二)----复制的几种模式
查看>>
javascript 简单认识
查看>>
tomcat 系统架构与设计模式 第二部分 设计模式 转
查看>>