SCC模板
vector<int> G[maxn];
int pre[maxn], low[maxn], c[maxn];
int n, m;
stack<int> s;
int dfstime, scc_cnt; void dfs(int u, int fa){
pre[u] = low[u] = ++dfstime;
int len = G[u].size();
s.push(u);
for (int i = ; i < len; i++){
int v = G[u][i];
if (pre[v] == -){
dfs(v, u);
low[u] = min(low[u], low[v]);
}
/*else if (low[v] < pre[u] && v != fa){///双连通里面,这里是通过反向边更新的
low[u] = min(low[u], low[v]);
}*/
else if (!c[v]){///下面为什么是pre[v]而不是low[v](两者都可以)
low[u] = min(low[u], pre[v]);///因为环装最后总会变回来,一样的
}
}
if (low[u] == pre[u]){
scc_cnt++;
while (true){
int x = s.top(); s.pop();
c[x] = scc_cnt;
if (x == u) break;
}
}
return ;
}
SCC模板的更多相关文章
- 【BZOJ 1051】 1051: [HAOI2006]受欢迎的牛 (SCC)
		
1051: [HAOI2006]受欢迎的牛 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如 ...
 - Luogu  P1726 上白泽慧音
		
这显然是一道求强连通分量(SCC)的题目. 只要你正常,都知道应该写Tarjan. 然后(假装会写Tarjan),其实我当然不会.但是求SCC还有另一个算法.复杂度和Tarjan一样,只不过常数大了点 ...
 - 【无聊放个模板系列】HDU 1269 (SCC)
		
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
 - 【模板】Tarjan scc缩点
		
代码如下 #include <bits/stdc++.h> using namespace std; const int maxv=1e4+10; const int maxe=1e5+1 ...
 - HDU 1269 -- 迷宫城堡【有向图求SCC的数目 && 模板】
		
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
 - 求强连通分量模板(tarjan算法)
		
关于如何求强连通分量的知识请戳 https://www.byvoid.com/blog/scc-tarjan/ void DFS(int x) { dfn[x]=lowlink[x]=++dfn_cl ...
 - noip的一些模板(参考了神牛的博客)
		
一.图论 1.单源最短路 洛谷P3371 (1)spfa 已加SLF优化 419ms #include <iostream> #include <cstdio> #includ ...
 - 微信小程序(五) 利用模板动态加载数据
		
利用模板动态加载数据,其实是对上一节静态数据替换成动态数据:
 - 洛谷4782 【模板】2-SAT 问题
		
原题链接 \(2-SAT\)模板 #include<cstdio> using namespace std; const int N = 2e6 + 10; int fi[N], di[N ...
 
随机推荐
- 美年健康股票成交量和K线关系
			
看下美年健康的股票,这次主要是研究下成交量和K线的关系,以最后5天为例子,股票下跌成交量降低,说明抛压很小,在最后3天,价格突破的时候,成交量是平时的两倍,说明有机构买入, 业绩部分还可以,全民健身是 ...
 - leetcode笔记--6 Add Digits
			
question: Given a non-negative integer num, repeatedly add all its digits until the result has only ...
 - Kotlin 1  函数
			
#2 函数 函数声明和平时我见到的有点不太一样,使用关键字fun来声明.(感觉好欢乐的样子···O(∩_∩)O~~) 下面的示例,简单的声明了一个函数: // 这是函数声明 fun this_is_a ...
 - 30分钟快速搭建Web CRUD的管理平台--django神奇魔法
			
加上你的准备的时间,估计30分钟完全够用了,因为最近在做爬虫管理平台,想着快速开发,没想到python web平台下有这么非常方便的框架,简洁而优雅.将自己的一些坑总结出来,方便给大家的使用. 准备环 ...
 - Gradle下载及安装教程
			
Gradle是基于Groovy语言的项目自动化建构工具,在使用Gradle之前常用的构建工具有Ant和Maven,使用这些工具我们可以用来管理项目依赖,打包,部署和发布等.使用Gradle我们将需要的 ...
 - Ubuntu-C++环境设置
			
在学习C++,顺便想熟悉一下Linux下开发 所以就开始搭建Linux环境 第一步就是下载虚拟机和Ubuntu 虚拟机 vm 12.1 Ubuntu 16 VM安装省略 Ubuntu安装省略 下面是我 ...
 - 利用selenium自动化登录淘宝
			
#encoding=utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import A ...
 - 洛谷P2346四子连棋
			
题目描述 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步. 黑白双方交替走棋,任意一方可 ...
 - C++ 递归读取目录下所有文件
			
windows版本 #include <iostream> #include <io.h> #include <fstream> #include <stri ...
 - [整理]docker内部时区修改的两种方法
			
方法一 终端执行 date命令,查看宿主服务器的时区是否正确 如果正确: 执行 docker cp /etc/localtime 容器ID:/etc/localtime 将本地时间拷贝到docker内 ...