博客
关于我
cf 977e 思维 + dfs
阅读量:283 次
发布时间:2019-03-03

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

题意:

n个点m条边的无向图,问有几个环,这个环上的点必须只有一个前驱和一个后继。

题解:

1.第1次dfs把度数不是2的点所在连通块上的点全部标记。

2.第2次dfs计算所有未标记的点的连通块数,有几个连通块就是几个环。

#include
#define N 200005#define mod 998244353using namespace std ;int n , m ;vector
edge[N] ;bool vis[N] ;void dfs(int u){ int v ; int i , j ; vis[u] = 1 ; for(i = 0 ; i < edge[u].size() ; i ++) { v = edge[u][i] ; if(!vis[v]) dfs(v) ; }}int main(){ int i , j ; int u , v ; int num = 0 ; scanf("%d%d" , &n , &m) ; for(i = 0 ; i < m ; i ++) { scanf("%d%d" , &u , &v) ; edge[u].push_back(v) ; edge[v].push_back(u) ; } memset(vis , 0 , sizeof(vis)) ; for(i = 1 ; i <= n ; i ++) if(!vis[i] && edge[i].size() != 2) dfs(i) ; for(i = 1 ; i <= n ; i ++) { if(!vis[i]) { dfs(i) ; num ++ ; } } printf("%d" , num) ;}

 

转载地址:http://npml.baihongyu.com/

你可能感兴趣的文章
Mybatis-plus代码生成器模板(MySQL数据库)
查看>>
使用redis管理Mybatis的二级缓存
查看>>
使用redis管理Mybatis-Plus的二级缓存
查看>>
Mybatis中的SQL语句等于、不等于和模糊查询的语法
查看>>
使用 github 搜索
查看>>
java有包名的类访问没有包名的类
查看>>
TIOBE 12月编程语言排行榜:Python有望第四次成为年度语言
查看>>
Python循环语句代码逐行详解:while、for、break和continue
查看>>
整型关键字的散列映射
查看>>
多位水仙花数-python(出现运行超时?不妨用减法计算)
查看>>
地下迷宫探索(后两个测试点无法通过?这里有你想要的答案)
查看>>
城市间紧急救援(dijkstra算法)
查看>>
小白看完都会了!阿里云大师深入拆解Java虚拟机,看完这一篇你就懂了
查看>>
【IT之路】FAQ-Hibernate报错:表不存在
查看>>
VBA之正则表达式(19)-- 相对引用转绝对引用
查看>>
巧用VBA统一数字单位
查看>>
Transpose实现数组行列转置的限制
查看>>
VBA中数组72变(随心所欲复制)
查看>>
[Golang]golang中自动锁的实现
查看>>
用float/double作为中转类型的“雷区”
查看>>