题意

    强连通分量,找独立的块

  强连通分量裸题

  

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream> using namespace std; const int maxn = ;
int n, m;
struct Edge
{
int v, next;
Edge (int v = , int next = ):
v(v), next(next) {}
}e[maxn*];
int head[maxn], label;
int stack[maxn], Scnt;
int belong[maxn], Bcnt;
int dfn[maxn], low[maxn], dfs_clock;
bool instack[maxn];
int siz[maxn], chu[maxn]; void ins(int u, int v)
{
e[++label] = Edge(v, head[u]);
head[u] = label;
} void dfs(int u)
{
dfn[u] = low[u] = ++dfs_clock;
stack[++Scnt] = u;
instack[u] = true;
for (int i = head[u]; i != -; i = e[i].next)
{
int v = e[i].v;
if (!dfn[v])
{
dfs(v);
low[u] = min(low[u], low[v]);
}
else
if (instack[v])
low[u] = min(low[u], dfn[v]);
}
if (low[u] == dfn[u])
{
Bcnt ++;
int v;
do
{
v = stack[Scnt --];
belong[v] = Bcnt;
instack[v] = false;
}while(v != u);
}
} int main()
{
scanf("%d %d", &n, &m);
for (int i = ; i <= n; ++i)
head[i] = -;
label = -;
for (int i = ; i <= m; ++i)
{
int u, v;
scanf("%d %d", &u, &v);
ins(u, v);
}
for (int i = ; i <= n; ++i)
instack[i] = belong[i] = dfn[i] = ;
Scnt = Bcnt = dfs_clock = ;
for (int i = ; i <= n; ++i)
if (!dfn[i])
dfs(i);
for (int i = ; i <= Bcnt; ++i)
siz[i] = chu[i] = ;
for (int i = ; i <= n; ++i)
{
siz[belong[i]] ++;
for (int j = head[i]; j != -; j = e[j].next)
{
int v = e[j].v;
if (belong[v] == belong[i])
continue ;
chu[belong[i]] ++;
}
}
int cnt = , ans;
for (int i = ; i <= Bcnt; ++i)
if (chu[i] == )
cnt ++, ans = siz[i];
if (cnt > )
ans = ;
printf("%d\n", ans);
return ;
}

POJ 2186 Popular Cows 强连通分量模板的更多相关文章

  1. poj 2186 Popular Cows (强连通分量+缩点)

    http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  2. POJ 2186 Popular Cows --强连通分量

    题意:给定一个有向图,问有多少个点由任意顶点出发都能达到. 分析:首先,在一个有向无环图中,能被所有点达到点,出度一定是0. 先求出所有的强连通分支,然后把每个强连通分支收缩成一个点,重新建图,这样, ...

  3. POJ 2186 Popular Cows(强连通分量缩点)

    题目链接:http://poj.org/problem?id=2186 题目意思大概是:给定N(N<=10000)个点和M(M<=50000)条有向边,求有多少个“受欢迎的点”.所谓的“受 ...

  4. 强连通分量分解 Kosaraju算法 (poj 2186 Popular Cows)

    poj 2186 Popular Cows 题意: 有N头牛, 给出M对关系, 如(1,2)代表1欢迎2, 关系是单向的且能够传递, 即1欢迎2不代表2欢迎1, 可是假设2也欢迎3那么1也欢迎3. 求 ...

  5. poj 2186 Popular Cows 【强连通分量Tarjan算法 + 树问题】

    题目地址:http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Sub ...

  6. tarjan缩点练习 洛谷P3387 【模板】缩点+poj 2186 Popular Cows

    缩点练习 洛谷 P3387 [模板]缩点 缩点 解题思路: 都说是模板了...先缩点把有环图转换成DAG 然后拓扑排序即可 #include <bits/stdc++.h> using n ...

  7. POJ 2186 Popular Cows (强联通)

    id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS   Memory Limit: 655 ...

  8. [强连通分量] POJ 2186 Popular Cows

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31815   Accepted: 12927 De ...

  9. POJ 2186 Popular cows(Kosaraju+强联通分量模板)

    题目链接:http://poj.org/problem?id=2186 题目大意:给定N头牛和M个有序对(A,B),(A,B)表示A牛认为B牛是红人,该关系具有传递性,如果牛A认为牛B是红人,牛B认为 ...

随机推荐

  1. Spring 控制台运行及RestTemplate实现Eurka负载均衡

    spring使用控制台运行方式 spring.main.web-application-type=none新老版本的配置有点差异 Maven的modules只是实现了一个顺序编译,一次多个项目一起生成 ...

  2. webstrom 里面使用github

    1.输入github的账号和密码,点击登录 2.复制github的项目地址,现在clone就行了

  3. 使用情况查询top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. top - 01:06:48 up 1:22, 1 ...

  4. HDU 3746 Cyclic Nacklace(KMP找循环节)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题目大意:给你一个字符串,求出将字符串的最少出现两次循环节需要添加的字符数. 解题思路: 这题需 ...

  5. HDU 3018 Ant Trip (并查集求连通块数+欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题目大意:有n个点,m条边,人们希望走完所有的路,且每条道路只能走一遍.至少要将人们分成几组. ...

  6. span文字里面自动换行时怎么办

    可以用white-space:nowrap来强制文字不换行,知道遇到<br>为止

  7. kali&BT安装好之后无法上网(包括Wifi)或者无法获得内网IP解决方法

    大家都知道,要想进行内网渗透攻击,你必须要在那个内网里.但是大家在Vmware里安装kali的时候,大多数用户为了方便,未选择桥接模式,而是选择了使用与本机共享的IP网络当然,这样能上网,但是你的虚拟 ...

  8. #ifndef的用法

    作用:防止头文件的重复包含和编译 定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说 ...

  9. 关于Web2.0概念的一篇小短文

    Web2.0程序设计的第一篇作业,写了就顺手放上来吧. 在互联网泡沫破裂数年后,Tim O'Reilly与John Battelle总结了互联网产业复兴过程中出现的一系列现象,在2004年举办的第一届 ...

  10. 【PAT】1002. 写出这个数 (20)

    1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...