博客
关于我
cf 977e 思维 + dfs
阅读量:285 次
发布时间: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/

你可能感兴趣的文章
RedisTemplate中opsForValue()中的方法
查看>>
redisTemplate.opsForHash()
查看>>
jvm栈和寄存器
查看>>
循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展
查看>>
maven生命周期
查看>>
方法的绑定机制-静态绑定和动态绑定
查看>>
内核程序和应用程序
查看>>
自动内存管理
查看>>
服务调用
查看>>
Sentinel
查看>>
Ribbon负载均衡策略
查看>>
服务调用
查看>>
SpringCloud
查看>>
fegin
查看>>
GateWay限流
查看>>
setnx
查看>>
Java取绝对值
查看>>
线程的start()方法
查看>>
for循环读取数组遇问题:dexError: invalid index to scalar variable.
查看>>
编写测试用例的实用小技巧
查看>>