ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
/*
这道题如果按照度为0的节点来判断的时候,将度为0的节点和其相连的节点(度数并减去1)
从图中去掉,如果度为0的节点的个数为0个但是图中的节点没有都去掉的 时候那么说明
出现了回路!用这种方法必须将重边去除掉! 所以推荐用dfs方式进行判断!这种方式还是比较直观的!
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std; int used[];
int deg[];
int map[][];
int sum;
bool topoSort(){
for(int i=; i<=sum; ++i){
int cnt=, p;
for(int j=; j<; ++j)
if(used[j] && deg[j]==) {
++cnt;
p=j;
}
if(cnt==) return false;
for(int j=; j<; ++j)
if(map[p][j]){
map[p][j]=;
--deg[j];
}
deg[p]=-;
}
return true;
} int main(){
int m;
char ch[];
while(cin>>m){
memset(used, , sizeof(used));
memset(deg, , sizeof(deg));
memset(map, , sizeof(map));
while(m--){
cin>>ch;
used[ch[]-'A'] =;
used[ch[]-'A'] =;
if(ch[]=='>'){
if (map[ch[]-'A'][ch[]-'A'] != ) {//去掉多重边
++deg[ch[]-'A'];
map[ch[]-'A'][ch[]-'A']=;
}
}
else{
if (map[ch[]-'A'][ch[]-'A'] != ) {
++deg[ch[]-'A'];
map[ch[]-'A'][ch[]-'A']=;
}
}
}
sum=;
for(int i=; i<; ++i)
if(used[i]) ++sum;
if(topoSort())
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
} */ #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int map[][];
int vis[]; bool dfs(int cur){
vis[cur]=-;
for(int i=; i<; ++i)
if(map[cur][i]){
if(vis[i]==-) return false;
if(!vis[i] && !dfs(i)) return false;
}
vis[cur]=;
return true;
} int main(){
int m;
char ch[];
while(cin>>m){
memset(vis, , sizeof(vis));
memset(map, , sizeof(map));
while(m--){
cin>>ch;
if(ch[]=='>')
map[ch[]-'A'][ch[]-'A']=;
else
map[ch[]-'A'][ch[]-'A']=;
}
int flag=;
for(int i=; i<; ++i)
if(!vis[i])
if(!dfs(i)){
flag=;
break;
}
if(flag) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return ;
}
ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)的更多相关文章
- CSS实现背景图尺寸不随浏览器大小而变化的两种方法
一些网站的首页背景图尺寸不随浏览器缩放而变化,本例使用CSS 实现背景图尺寸不随浏览器缩放而变化,方法一. 把图片作为background,方法二使用img标签.喜欢的朋友可以看看 一些网站的首页 ...
- Java对象排序两种方法
转载:https://blog.csdn.net/wangtaocsdn/article/details/71500500 有时候需要对对象列表或数组进行排序,下面提供两种简单方式: 方法一:将要排序 ...
- CSS实现自适应不同大小屏幕的背景大图的两种方法(转自简书)
CSS实现自适应不同大小屏幕的背景大图的两种方法 一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块 ...
- 转:python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法方法1 用List的内建函数list sort进行排序list sort(func=None, key=None, reverse=False)Pytho ...
- C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法。
原文:C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法. 一般我们在开发Windows Phone App时,需要取得萤幕的大小来自定义最佳化控制项的大小,但是开如何取得萤 ...
- 使用Idea当中的快捷键快速查看继承关系或其图表的两种方法
一.Idea当中有两种方法可以查看继承关系 在Idea当中选中一个类,然后按Ctrl+H,可以快速查看当前所选类的继承关系,如下图: 同样选中一个类,按CTRL+ALT+U,即可生成当前类的继承关 ...
- HDU 1160 排序或者通过最短路两种方法解决
题目大意: 给定一堆点,具有x,y两个值 找到一组最多的序列,保证点由前到后,x严格上升,y严格下降,并把最大的数目和这一组根据点的编号输出来 这里用两种方法来求解: 1. 我们可以一开始就将数组根据 ...
随机推荐
- 一种简单的实现:Android一键换肤功能
现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...
- 如何让MVC6在IIS上面跑
asp.net5的MVC6发布出来的结果和MVC5之前版本的相差太远了,直接在本地的IIS服务器上面是不可能运行的. 看了汤姆大叔的MVC6项目发布与部署,讲了很多丰富的知识点.但是对于立即要解决问题 ...
- 《利用Python进行数据分析》第6章学习笔记
数据加载.存储与文件格式 读写文本格式的数据 逐块读取文本文件 read_xsv参数nrows=x 要逐块读取文件,需要设置chunksize(行数),返回一个TextParser对象. 还有一个ge ...
- 12G服务器在BIOS中收集阵列卡日志(TTY日志)的方法
如果系统进不去.请参考如下方法收集日志. 请准备个U 盘,容量在8G以下(含8G),否则会识别不到. 图片参考,以描述为准 F2 enter BIOS option--> Enter the ...
- 浏览器 onbeforeunload 事件 兼容写法
window.onbeforeunload = onbeforeunload_handler; function onbeforeunload_handler() { var warning = &q ...
- 【异常】VS中运行HTTP 无法注册URL
参考资料 http://www.java123.net/detail/view-449670.html http://www.cnblogs.com/jiewei915/archive/2010/06 ...
- NetMq学习--发布订阅(一)
基于NeqMq 4.0.0-rc5版本发布端: using (var publisher = new PublisherSocket()) { publisher.Bind("tcp://* ...
- nginx+winsw windows服务
1.下载Nginx:http://nginx.org/en/download.html 2.下载winsw配置包:http://files.cnblogs.com/files/objecttozero ...
- SQL Server里的闩锁介绍
在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...
- Razor.js,基于JavaScript的Razor实现
哈罗大家好,之前造了JS模板轮子Otmpl,虽然勉强算不错,但是和MVC Razor的简洁优雅相比,简直是惨不忍睹.经过几天的研究,终于在参考国外一些牛人的代码后,展现出第一版,欢迎各位园友拍砖讨论. ...