Popular Cows

题意:一只牛崇拜另外一只牛,这种崇拜关系可以传导。A->B,B->C =>A->C。现在给出所有的关系问你有多少牛被其他所有的牛都崇拜。

思路:就是一个tarjan裸模板求出所有的点的low和dfn值,让后通过缩点的方法,确定那些出度为0的点。符合条件的牛肯定就在tarjan求出的所有强连通分量里。缩点后它不会有出度。如果缩点后有多个出度为0的点那么就不存在符合条件的牛了。

int n,m,top,c,ti,low[N],Stack[N],vis[N],dfn[N],chu[N],belong[N],num[N];//每个点的入度;
vector<int>g[N];
void init()
{
c=ti=top=0;
for(int i=1; i<N; i++) g[i].clear();
memset(low,0,sizeof(low));
memset(dfn,0,sizeof(dfn));
memset(vis,0,sizeof(vis));
memset(chu,0,sizeof(chu));
memset(num,0,sizeof(num));
memset(Stack,0,sizeof(Stack));
memset(belong,0,sizeof(belong));
}
void tarjan(int u)
{
int v;
low[u]=dfn[u]=++ti;
vis[u]=1;
Stack[top++]=u;
int len=g[u].size();
for(int j=0; j<len; j++)
{
v=g[u][j];
if(!dfn[v])
{
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(vis[v]&&low[u]>dfn[v]) low[u]=dfn[v];
}
if(low[u]==dfn[u])
{
c++;
do
{
v=Stack[--top];
// printf("%d %d\n",v,c);
vis[v]=0;
belong[v]=c;
num[c]++;
}
while(u!=v);
}
}
int solve()
{
for(int i=1; i<=n; i++) if(!dfn[i]) tarjan(i);
for(int i=1;i<=n;i++)
{
for(int j=0;j<g[i].size();j++)
{
int v=g[i][j];
if(belong[i]!=belong[v]) chu[belong[i]]++;
}
}
int numm=0,ans=0;
for(int i=1;i<=c;i++) if(!chu[i])
{
numm++;//出度为0的分量
ans=num[i];
}
// if(!numm) ans=n;
if(numm>1) ans=0;
return ans;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
init();
int u,v;
for(int i=0; i<m; i++)
{
scanf("%d%d",&u,&v);
g[u].push_back(v);
}
int ans=solve();
pd(ans);
}
return 0;
}


POJ-2186 Popular Cows,tarjan缩点找出度为0的点。的更多相关文章

  1. POJ 2186 Popular Cows tarjan缩点算法

    题意:给出一个有向图代表牛和牛喜欢的关系,且喜欢关系具有传递性,求出能被所有牛喜欢的牛的总数(除了它自己以外的牛,或者它很自恋). 思路:这个的难处在于这是一个有环的图,对此我们可以使用tarjan算 ...

  2. POJ 2168 Popular cows [Tarjan 缩点]

                                                                                                         ...

  3. poj 2186 Popular Cows tarjan

    Popular Cows Description Every cow's dream is to become the most popular cow in the herd. In a herd ...

  4. [poj 2186]Popular Cows[Tarjan强连通分量]

    题意: 有一群牛, a会认为b很帅, 且这种认为是传递的. 问有多少头牛被其他所有牛认为很帅~ 思路: 关键就是分析出缩点之后的有向树只能有一个叶子节点(出度为0). 做法就是Tarjan之后缩点统计 ...

  5. POJ 2186 Popular cows(SCC 缩点)

    Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10, ...

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

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

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

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

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

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

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

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

随机推荐

  1. LeetCode 100 及 101题

    100. 相同的树 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [ ...

  2. 向fedora添加rpmfusion源

    http://blog.csdn.net/pu1030/article/details/7332036 有的rpmfusion地址有版本问题,找到一个比较好用的摘录一下: 从http://downlo ...

  3. Symbol.iterator 和 for of

    Symbol.iterator 和 for of 是es6的新特性 可以为对象设置 自己的迭代器 首先介绍我们的for of var arr = [1,2,3,8,33] for (var i of ...

  4. COGS 36. 求和问题

    时间限制:1.2 s   内存限制:128 MB [问题描述]     在一个长度为n的整数数列中取出连续的若干个数,并求它们的和. [输入格式]     输入由若干行组成,第一行有一个整数n    ...

  5. Servlet和JSP之标签文件学习

    在上一篇文章中介绍了自定义标签的用法,接下来介绍标签文件的用法啦. tag file指令 tag file简介 用tag file的方式,无需编写标签处理类和标签库描述文件,也可以自定义标签.tag ...

  6. Cordova插件中JavaScript代码与Java的交互细节介绍

    在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"--自定义插件.意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用 ...

  7. httpmodule初识

    .net的请求流程: HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE- ...

  8. windows/Linux 常用命令

    windows 文件操作命令 cd 切换文件目录 dir 显示文件目录内容 md 创建文件夹 rd 删除文件夹 copy 拷贝文件 move 移动文件 del 删除文件 replace 替换文件 mk ...

  9. Mac如何让调整窗口大小更简单

    在使用Mac的时候,你能把鼠标的光标悬停在任何程序的边缘,当光标自动变成箭头样式后,按住鼠标左键你将能随意拖动来改变程序窗口的大小.但是,这里有个问题,我们有时候很难控制把鼠标光标移动在正确的窗口边缘 ...

  10. java面试基础篇(三)

    1.Q:ArrayList 和 LinkedList 有什么区别? A:ArrayList查询快!LinkedList增删快.ArrayList是基于索引的数据接口,它的底层是数组.空间占用相对小一些 ...