题意:给你一个无向图,判断是否存在长度为K的环。

思路:dfs遍历以每一个点为起点是否存在长度为k的环。dfs(now,last,step)中的now表示当前点,last表示上一个访问的 点,step一个记录路径长度的计数器,s【i】记录从起点到i点的路径长度。如果某点被访问第二次,则说明出现环,判断当前路径长度和它第一次出现是的 长度差是否等于K即可。

#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=;
bool e[maxn][maxn],flag;
int s[maxn];
int n,m,k,a,b,t;
bool dfs(int now,int last,int step)
{
if(s[now]) return step-s[now]==k;
s[now]=step;
for(int i=;i<n;i++)
{
if(i!=last&&e[now][i]&&dfs(i,now,step+1))
      return true;
}
return false;
} int main()
{
scanf("%d",&t);
while(t--)
{
for(int i=;i<maxn;i++)
{
for(int j=;j<maxn;j++)
{
e[i][j]=false;
}
}
scanf("%d%d%d",&n,&m,&k);
while(m--)
{
scanf("%d%d",&a,&b);
e[a][b]=e[b][a]=true;
}
flag=false;
for(int i=;i<n;i++)
{
memset(s,,sizeof(s));
if(dfs(i,,))
flag=true;
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return ;
}

CSU 1660 K-Cycle(dfs判断无向图中是否存在长度为K的环)的更多相关文章

  1. Codeforces Round #161 (Div. 2) D. Cycle in Graph(无向图中找指定长度的简单环)

    题目链接:http://codeforces.com/problemset/problem/263/D 思路:一遍dfs即可,dp[u]表示当前遍历到节点u的长度,对于节点u的邻接点v,如果v没有被访 ...

  2. cf290-2015-2-3总结与反思(dfs判断无向图是否有环)

    bool dfs(int i,int pre) { visit[i]=true; ;j<=v;j++) if(g[i][j]) { if(!visit[j]) return dfs(j,i); ...

  3. 基于邻接表的长度为k的简单路径的求解

    描述 一个连通图采用邻接表作为存储结构.设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径. 输入 多组数据,每组m+3数据行.第一行有两个数字n,m和k,代表有n个顶点,m条边和 ...

  4. 【LeetCode】1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 Check If a String Contains All Binary Codes of Size K

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计长度为 K 的子串个数 日期 题目地址:https ...

  5. PAT甲题题解-1122. Hamiltonian Cycle (25)-判断路径是否是哈密顿回路

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789799.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  6. 判断强联通图中每条边是否只在一个环上(hdu3594)

    hdu3594 Cactus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  7. [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  8. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

  9. 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X

    题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的 ...

随机推荐

  1. Online, Asynchronous Schema Change in F1

    F1: A Distributed SQL Database That Scales   http://disksing.com/understanding-f1-schema-change   ma ...

  2. android的程序运行数据存放在哪里?

    Android应用开发中,给我们提供了5种数据的存储方式1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 ...

  3. mvc配合jquery.validate验证失效,情况之一

    用viewbage绑定input空间的value值,通过submit提交.validate验证失效. 1.应该是mvc的渲染顺序导致js验证失败. 解决方案:改用mvc自带的@html辅助方法,生成文 ...

  4. sql执行

    一.提高sql执行效率---in与exist . where column in (select * from table where ...) . ...where exists (select ' ...

  5. Oracle --获取绑定变量的值.

    SELECT * FROM DBA_HIST_SQLBIND WHERE SNAP_ID>67073 AND SNAP_ID<=67079 AND SQL_ID='3DR3410F086P ...

  6. js toString()

  7. SQL索引添加

    EXPLAIN select * from view_agzsaycommont  where id >0

  8. 基于spring的aop实现读写分离与事务配置

    项目开发中经常会遇到读写分离等多数据源配置的需求,在Java项目中可以通过Spring AOP来实现多数据源的切换. 一.Spring事务开启流程 Spring中通常通过@Transactional来 ...

  9. Android四大组件之Activity

    实验内容 了解Activity的四个状态 Activity的生命周期 启动另外一个Activity 实验要求 编码实现观察Activity的生命周期函数执行过程 编码实现启动另外一个Activity ...

  10. 探索模拟angular的双向绑定

    前言 本次探索的demo是基于jquery写的,毕竟jquery提供了强大的选择器,用惯了就离不开它了!angular的双向绑定实在是有点精深,本次探索只实现了文本的双向绑定. View-Model ...