点击打开链接

有向图强联通,Kosaraju算法

缩点后分别入度和出度为0的点的个数 answer = max(a, b);

scc_cnt = 1; answer = 0

#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<stack>
using namespace std; const int maxn = 20000 + 10; vector<int> G[maxn], G2[maxn];
vector<int> S;
int vis[maxn], sccno[maxn], scc_cnt; void dfs1(int u){
if(vis[u]) return ;
vis[u] = 1;
for(int i=0; i<G[u].size(); ++i) dfs1(G[u][i]);
S.push_back(u);
} void dfs2(int u){
if(sccno[u]) return ;
sccno[u] = scc_cnt;
for(int i=0; i<G2[u].size(); ++i)dfs2(G2[u][i]);
} void find_scc(int n){
scc_cnt = 0;
S.clear();
memset(sccno, 0, sizeof sccno );
memset(vis, 0, sizeof vis );
for(int i=0; i<n; ++i) dfs1(i);
for(int i=n-1; i>=0; --i){
if(!sccno[S[i]]) {
scc_cnt++;
dfs2(S[i]);
}
}
} int in[maxn], out[maxn]; int main(){
int T, n, m;
scanf("%d", &T);
while(T--){
scanf("%d%d", &n, &m);
for(int i=0; i<n; ++i) {
G[i].clear(); G2[i].clear();
}
for(int i=0; i<m; ++i){
int u, v;
scanf("%d%d", &u, &v); u--; v--;
G[u].push_back(v);
G2[v].push_back(u);
} find_scc(n);
if(scc_cnt==1){
printf("0\n");
continue;
}
memset(in, 0, sizeof in );
memset(out, 0, sizeof out );
for(int u=0; u<n; ++u){
for(int i=0; i<G[u].size(); ++i){
int &v = G[u][i];
if(sccno[u] != sccno[v]) {
out[sccno[u]]++;
in[sccno[v]]++;
}
}
} int a = 0, b = 0;
for(int i=1; i<=scc_cnt; ++i){
if(!in[i]) a++;
if(!out[i]) b++;
}
printf("%d\n", max(a, b));
}
return 0;
}

hdu2767 Proving Equivalences,有向图强联通,Kosaraju算法的更多相关文章

  1. 【Python排序搜索基本算法】之深度优先搜索、广度优先搜索、拓扑排序、强联通&Kosaraju算法

    Graph Search and Connectivity Generic Graph Search Goals 1. find everything findable 2. don't explor ...

  2. POJ 3180-The Cow Prom (图论-有向图强联通tarjan算法)

    题目大意:有n个牛在一块, m条单项绳子, 有m个链接关系, 问有多少个团体内部任意两头牛可以相互可达 解题思路:有向图强连通分量模版图 代码如下: #include<stdio.h> # ...

  3. HDU2767 Proving Equivalences(加边变为强联通图)

    Proving Equivalences Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  4. 有向图的强联通tarjan算法(判断是否为强联通模板)(hdu1269)

    hdu1269 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  5. POJ 1236-Network of Schools (图论-有向图强联通tarjan)

    题目链接:http://poj.org/problem?id=1236 题目大意:N(2<N<100)个学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输.问题 ...

  6. hdu2767 Proving Equivalences --- 强连通

    给一个图,问至少加入�多少条有向边能够使图变成强连通的. 原图是有环的,缩点建图,在该DAG图上我们能够发现,要使该图变成强连通图必须连成环 而加入�最少的边连成环,就是把图上入度为0和出度为0的点连 ...

  7. HDU2767 Proving Equivalences

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  8. hdu2767 Proving Equivalences Tarjan缩点

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  9. UVALive-4287 Proving Equivalences 有向图的强连通分量+缩点

    题意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次推导. 思路:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图.找出所有 ...

随机推荐

  1. python笔记:字符编码

    ASCII编码 知识点:计算机中最小的单位是bit,bit就咱们常说一位二进制,一位二进制要么是0 要么是 1.但是bit这个单位太小了,我们用字节(byte)来表示.换算的规则如下: 8b = 1B ...

  2. Hadoop MapReduce编程 API入门系列之join(二十六)(未完)

    不多说,直接上代码. 天气记录数据库 Station ID Timestamp Temperature 气象站数据库 Station ID Station Name 气象站和天气记录合并之后的示意图如 ...

  3. Oracle性能优化——总体介绍

    最近参加Oracle的培训,对Oracle有了更加深入的认识,在此做个学习总结. 1.Oracle数据库调优不能仅指望修改几项数据库参数就能有明显效果,问题更多出在应用方面,教育开发者正确地使用数据库 ...

  4. Session版购物车+MVC局部刷新

     效果图: 大致代码: <script type="text/javascript"> $(function () { LoadOrderDetailList(); } ...

  5. MVC学习日记(三)EntityFramework

    其实学会了第一篇的创建和第二篇的使用以后,基本的mvc操作足够了,至于验证神马的,还不如用Jquery.h5的好看适用,所以接下来, 后续上会讲一些比较实用的. 在之前的文章说到了基础的使用, 那么, ...

  6. WinForm进程 线程

    进程主要调用另一程序,线程 分配工作. 一.进程: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.Process 类,用来操 ...

  7. 01--[转]C++强大背后

    [转]C++强大背后 2014-01-22 分类:互联网 阅读(9295) 评论(6) 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bj ...

  8. VGG 19

    关于VGG19的一些参考资料 http://www.cnblogs.com/vipyoumay/archive/2017/11/23/7884472.html https://cloud.tencen ...

  9. Python基础:条件判断 &&循环

    1:条件判断 2:循环 2.1:for 2.2  while 小结: continue :跳出本次循环 进行下次循环,  break :结束循环体.

  10. java中后端拼接字符串返回前台页面换行显示

    后端拼接时用:"\n"分割,比如: String str = "白日依山尽,\n" + "黄河入海流:"; 返回前台页面时,放入 <p ...