链接:http://acm.hdu.edu.cn/showproblem.php?pid=5222

题意:给定n个点m1条无向边m2条有向边,无向边只允许通过一次,求是否存在环。

分析:直接dfs找,找过的点和边标记不可重复做起点和重复经过,无向边的话在同一次dfs的时候标记只许从一个方向通过。

代码:

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<bitset>
#include<math.h>
#include<vector>
#include<string>
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int N=1000010;
const int mod=100000000;
const int MOD1=1000000007;
const int MOD2=1000000009;
const double EPS=0.00000001;
typedef long long ll;
const ll MOD=1000000007;
const int INF=1000000010;
const ll MAX=1ll<<55;
const double pi=acos(-1.0);
typedef double db;
typedef unsigned long long ull;
int n,m1,m2,q[N];
int tot,u[N],v[3*N],p[3*N],pre[3*N];
void add(int a,int b) {v[tot]=b;p[tot]=0;pre[tot]=u[a];u[a]=tot++;
}
int dfs(int a) {q[a]=2;for (int i=u[a];i!=-1;i=pre[i])if (!p[i]&&(i>=m1*2||p[i^1]!=2)) {if (q[v[i]]!=2) {q[v[i]]=2;p[i]=2;if (dfs(v[i])) return 1;q[v[i]]=1;p[i]=1;} else return 1;}q[a]=1;return 0;
}
int main()
{int a,b,i,t,bo;scanf("%d", &t);while (t--) {scanf("%d%d%d", &n, &m1, &m2);tot=0;memset(u,-1,sizeof(u));for (i=1;i<=m1;i++) scanf("%d%d", &a, &b),add(a,b),add(b,a);for (i=1;i<=m2;i++) scanf("%d%d", &a, &b),add(a,b);for (i=1;i<=n;i++) q[i]=0;for (bo=0,i=1;i<=n;i++)if (!q[i]) { if (bo=dfs(i)) break ; }if (bo) printf("YES\n");else printf("NO\n");}return 0;
}

hdu5222Exploration相关推荐

最新文章

  1. 基于Google Reader的个人知识管理方案
  2. 学习UI设计都需要了解哪些知识
  3. 一种缘于积木游戏的思维
  4. 老手是这样教新手编程的
  5. 软件安装被分成了两个iso文件怎么安装
  6. mysql/event.myd no fond_mysql Last_Error: Error 'File './sales.MYD' not found (Errcode: 24)
  7. python 接收邮件服务器地址_Python 用IMAP接收邮件
  8. 【剑指offer】面试题30:包含min函数的栈(Java)
  9. 【编程】不同编程语言的用处(图解)
  10. 北大AI第八讲 李航 自然语言处理的现实与挑战
  11. 富士胶片滤镜人像调色预设PS插件
  12. php swf转image,gif转换swf|助你将gif图片转换成swf(flash)文件
  13. win10系统迁移后系统重装_怎样将Win10系统转移到SSD固态硬盘
  14. STM32毕业设计项目
  15. 你对计算机专业考研知道多少
  16. google play 爬虫项目
  17. win10找不到便签(便利贴)怎么办,Win10找回便签功能的方法
  18. 查找整数 本题要求从输入的N个整数中查找给定的X
  19. 基于影像基因的肺结节分割、肺癌分类分期、CT影像预测基因突变 --董云云 论文阅读
  20. Scala-scalaMap转JSON字符串和javaMap

热门文章

  1. 换新衣服了捏...^^
  2. 计算机其他快捷方式如何删除,我的电脑其他组件图标怎么删除
  3. DC2靶场渗透流程(超详细)
  4. shell alias命令,给命令设置别名
  5. CSS制作旋转立体正方形
  6. Laravel之Contracts和Facades详解
  7. python和ansible自动化网络安全工作流程
  8. NF5280M5 – BIOS设置
  9. Oracle 正则 判断数字,oracle 判断是否数字 正则表达式法
  10. 511遇见易语言学习信息框