HDU 5154 Harry and Magical Computer 有向图判环
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5154
题解:
有向图判环。
1、用dfs,正在访问的节点标记为-1,已经访问过的节点标记为1,没有访问过的节点标记为0,如果访问到-1的节点说明说有环。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long LL; int n,m; const int maxm=+;
const int maxn=; struct Edge{
int v,ne;
Edge(int v,int ne):v(v),ne(ne){}
Edge(){}
}egs[maxm]; int head[maxn],tot;
int vis[maxn]; void addEdge(int u,int v){
egs[tot]=Edge(v,head[u]);
head[u]=tot++;
} bool dfs(int cur){
vis[cur]=-;
int p=head[cur];
while(p!=-){
Edge &e=egs[p];
if(vis[e.v]==){
if(dfs(e.v)) return true;
}
else if(vis[e.v]==-){
return true;
}
p=e.ne;
}
vis[cur]=;
return false;
} void init(){
memset(head,-,sizeof(head));
memset(vis,,sizeof(vis));
tot=;
} int main(){
while(scanf("%d%d",&n,&m)==&&n){
init();
while(m--){
int u,v;
scanf("%d%d",&u,&v);
addEdge(u,v);
}
int su=;
for(int i=;i<=n;i++){
if(vis[i]==){
if(dfs(i)){
su=; break;
}
}
}
if(su) puts("YES");
else puts("NO");
}
return ;
}
2、拓扑排序。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL; int n, m; const int maxm = + ;
const int maxn = ; struct Edge {
int v, ne;
Edge(int v, int ne) :v(v), ne(ne) {}
Edge() {}
}egs[maxm]; int head[maxn], tot;
int ind[maxn]; void addEdge(int u, int v) {
egs[tot] = Edge(v, head[u]);
head[u] = tot++;
} void init() {
memset(head, -, sizeof(head));
memset(ind, , sizeof(ind));
tot = ;
} int main() {
while (scanf("%d%d", &n, &m) == && n) {
init();
while (m--) {
int u, v;
scanf("%d%d", &u, &v);
addEdge(u, v);
ind[v]++;
}
queue<int> q;
for (int i = ; i <= n; i++) {
if (ind[i] == ) q.push(i);
}
while (!q.empty()) {
int u = q.front(); q.pop();
//printf("v:%d\n", v);
int p = head[u];
while (p != -) {
Edge& e = egs[p];
ind[e.v]--;
if (ind[e.v] == ) q.push(e.v);
p = e.ne;
}
}
int su = ;
for (int i = ; i <= n; i++) {
if (ind[i]) { su = ; break; }
}
if (su) puts("YES");
else puts("NO");
}
return ;
}
HDU 5154 Harry and Magical Computer 有向图判环的更多相关文章
- hdu 5154 Harry and Magical Computer
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5154 Harry and Magical Computer Description In reward ...
- hdu 5154 Harry and Magical Computer 拓扑排序
Harry and Magical Computer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU 3342 Legal or Not(有向图判环 拓扑排序)
Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- (简单) HDU 5154 Harry and Magical Computer,图论。
Description In reward of being yearly outstanding magic student, Harry gets a magical computer. When ...
- HDU 5154 Harry and Magical Computer bfs
Harry and Magical Computer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- Dwarves (有向图判环)
Dwarves 时间限制: 1 Sec 内存限制: 64 MB提交: 14 解决: 4[提交][状态][讨论版] 题目描述 Once upon a time, there arose a huge ...
- COJ 3012 LZJ的问题 (有向图判环)
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=1042 试题描述: LZJ有一个问题想问问大家.他在写函数时有时候很头疼,如 ...
- CodeForces 937D 936B Sleepy Game 有向图判环,拆点,DFS
题意: 一种游戏,2个人轮流控制棋子在一块有向图上移动,每次移动一条边,不能移动的人为输,无限循环则为平局,棋子初始位置为$S$ 现在有一个人可以同时控制两个玩家,问是否能使得第一个人必胜,并输出一个 ...
- 【HDOJ】5154 Harry and Magical Computer
拓扑排序. /* 5154 */ #include <iostream> #include <cstdio> #include <cstring> #include ...
随机推荐
- redis、Memcached、MongoDb使用心得
最近在思考数据库以及缓存的问题,发现这些知识点其实是有一点关联的,于是这篇文章通过一个连环提问的方式将这些知识点串联起来. 问:为什么要用 Memcached.Redis,直接用 MySQL 这些数据 ...
- Redis底层数据类型
Redis主要数据结构:简单动态字符串(SDS).双端链表.字典.跳跃表.整数集合.压缩列表和快速列表: 一.简单动态字符串(SDS): Redis没有直接使用C语言中的传统的字节数组保存字符串,而是 ...
- [转]Python爬虫html解析工具beautifulSoup在pycharm中安装及失败的解决办法
原文地址:https://www.cnblogs.com/yysbolg/p/9040649.html 刚开始学习一门技术最麻烦的问题就是搞定IDE环境,直接在PyCharm里安装BeautifulS ...
- spring boot2整合dubbox全注解
前题 dubbox是dubbo的一个升级版,简单说就是本来dubbo是阿里开发的,现在阿里不维护了,当当网拿过去继续开发.本来阿里的dubbo维护到2.6版本,而再高版本的都是当当网维护的就叫成dub ...
- aircrack-ng 破解无线网络
1.科普当今时代,wifi 已成为我们不可缺少的一部分,上网.看视频.玩游戏,没有 wifi 你就等着交高额的流量费吧,本来我想单独的写 wpa 破解和 wps 破解,后来觉得分开写过于繁琐,索性合并 ...
- Go语言反射之值反射
1 概述 反射不仅可以获取值的类型信息,还可操作变量的值.使用 reflect.Value 类型操作变量的值. 2 值反射对象 reflect.ValueOf() 方法可以获取一个值的反射对象,之后可 ...
- Pytorch之Variable求导机制
自动求导机制是pytorch中非常重要的性质,免去了手动计算导数,为构建模型节省了时间.下面介绍自动求导机制的基本用法. #自动求导机制 import torch from torch.autogra ...
- 20155209 2016-2017-2《Java程序设计》课程总结
20155209 2016-2017-2<Java程序设计>课程总结 预备作业1 刚刚接触Markdown的写法,刚刚接触博客,简单了解娄老师的教学方式. 预备作业2 怎么将学习java像 ...
- 20155218 2006-2007-2 《Java程序设计》第3周学习总结
20155218 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 ==使用在比较两个参考名称是否参考同一对象:equals()比较实质是否相同. 看见new关 ...
- 考研编程练习----m叉树先序和后序所包含的情况
题目描述: We are all familiar with pre-order, in-order and post-order traversals of binary trees. A comm ...