http://poj.org/problem?id=2186

题意 :给你n头牛,m对关系,每对关系由两个编号组成,u和v代表着u认为v是受欢迎的,如果1认为2是受欢迎的,2认为3是受欢迎的,那1认为3也是受欢迎的。

思路 :强联通分量的Tarjan做法,将这些牛之间的关系看成一个有向图,最受欢迎的那个牛的那个点一定是出度为0的点。Tarjan的基本资料:http://hi.baidu.com/lydrainbowcat/item/1c664b662b1a1692c4d2491c

#include <stdio.h>
#include <stack>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream> using namespace std; const int maxn = ;
const int maxm = ;
stack<int >Q ;
int head[maxn],ID[maxn],low[maxn],dfn[maxn],in[maxn],out[maxn] ;
int cnt,cntt,n,m ,ans; struct node
{
int v,next,id ;
}Edge[maxm] ; void addedge(int u,int v,int w)
{
Edge[w].v = v ;
Edge[w].next = head[u] ;
head[u] = w ;
} void tarjan(int u)
{
int v,t ;
int minn = dfn[u] = low[u] = cnt++ ;
Q.push(u) ;
for(int k = head[u] ; k+ ; k = Edge[k].next)
{
v = Edge[k].v ;
if(dfn[v] == -)
tarjan(v) ;
minn = min(minn,low[v]) ;
}
if(minn < low[u]) {low[u] = minn ; return ;}
do
{
ID[t = Q.top()] = cntt ;
low[t] = n ;
out[cntt]++ ;
Q.pop() ;
}while(t != u) ;
cntt++ ;
} void Init()
{
memset(head,-,sizeof(head)) ;
memset(dfn,-,sizeof(dfn)) ;
memset(in,,sizeof(in)) ;
memset(out,,sizeof(out)) ;
cnt = cntt = ans = ;
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
Init() ;
int u,v ,flag;
for(int i = ; i < m ; i++)
{
scanf("%d %d",&u,&v) ;
addedge(u-,v-,i) ;
}
for(int i = ; i < n ; i++)
if(dfn[i] == -)
tarjan(i) ;
for(int i = ; i < n ; i++)
{
for(int j = head[i] ; j+ ; j = Edge[j].next)
{
int a = ID[i],b = ID[Edge[j].v] ;
if(a != b) in[ID[i]]++ ;
}
}
for(int i = ; i < cntt ; i++)
{
if(!in[i])
{
ans++ ;
flag = i ;
}
}
if(ans == ) printf("%d\n",out[flag]) ;
else printf("0\n") ;
}
return ;
}

POJ 2186 Popular Cows(Tarjan)的更多相关文章

  1. POJ 2186 Popular Cows(强连通)

                                                                  Popular Cows Time Limit: 2000MS   Memo ...

  2. poj 2186: Popular Cows(tarjan基础题)

    题目链接 tarjan参考博客 题意:求在图上可以被所有点到达的点的数量. 首先通过tarjan缩点,将所有内部两两可达的子图缩为一点,新图即为一个有向无环图(即DAG). 在这个DAG上,若存在不止 ...

  3. POJ 2186.Popular Cows (强连通)

    强连通缩点,统计入度为1的缩点后的点的个数 个数1的话输出这个强连通分量的点的数量 否则输出0: code /* Kosaraju算法,无向图的强连通分量,时间复杂度O(n+m) 思路: 按照图G的深 ...

  4. POJ 2186 Popular Cows(强联通+缩点)

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

  5. POJ 2186 Popular Cows(Targin缩点)

    传送门 Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31808   Accepted: 1292 ...

  6. poj 2186 Popular Cows【tarjan求scc个数&&缩点】【求一个图中可以到达其余所有任意点的点的个数】

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27698   Accepted: 11148 De ...

  7. POJ 2186 Popular Cows(强连通分量Kosaraju)

    http://poj.org/problem?id=2186 题意: 一个有向图,求出点的个数(任意点可达). 思路: Kosaraju算法的第一次dfs是后序遍历,而第二次遍历时遍历它的反向图,从标 ...

  8. poj 2186 "Popular Cows"(强连通分量入门题)

    传送门 参考资料: [1]:挑战程序设计竞赛 题意: 每头牛都想成为牛群中的红人. 给定N头牛的牛群和M个有序对(A, B),(A, B)表示牛A认为牛B是红人: 该关系具有传递性,所以如果牛A认为牛 ...

  9. POJ 2186 Popular Cows(强连通分量)

    [题目链接] http://poj.org/problem?id=2186 [题目大意] 给出一张有向图,问能被所有点到达的点的数量 [题解] 我们发现能成为答案的,只有拓扑序最后的SCC中的所有点, ...

随机推荐

  1. ajax 跨域的几种方式

    网络上跨域的文章大多一样,这里我写下,巩固下自己的知识,顺便做个记录 什么是跨域 这里简单拿百度的网址做个例子:http://www.baidu.com:80 (默认都是80端口.可省略) http ...

  2. PHP之数组函数归类

    数组之所以强大,除了本身声明.存储方式灵活,它还有坚强后盾:一系列功能各异的数组处理函数.就像一只军队,除了领队将军本身能征善战,指挥英明之外,还有一群不怕死.忠实于他的士兵,这样才能显得整体的强大. ...

  3. RabbitMQ 原文译03--发布和订阅

    发布/订阅 在之前的案例中我们创建了一个工作队列,这个工作队列的实现思想就是一个把每一个任务平均分配给每一个执行者,在这个篇文章我们会做一些不一样的东西,把一个消息发送给多个消费者,这种模式就被称作& ...

  4. Controller中利用RedirectToRoute重定向的问题

    先看看我们例子用到的路由表 routes.MapRouteWithName( name: "ProductDetail", url: "{Platform}/Produc ...

  5. arcgis中的 style和serverstyle

    转自网络,原出处不明. .style文件是用ArcMap工具导出的符号库文件 .serverStyle文件是ArcEnging可用的符号库文件 需要转换才能使用. 第一:把.style文件拷贝到D:主 ...

  6. HTML——<meta http-equiv="content-type" content="text/html; charset=UTF-8">

    没有添加这句话的编码方式的话,很容易就乱码了 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&g ...

  7. C# IO操作(一)Path类的常用方法

    1.Path类,查看编译器可知,这个类是个静态的工具类,需要注意的是,这个类是对字符串的操作,与文件无关. 1)ChangeExtension()方法,修改文件的后缀(调用这个方法,如果给第二个参数制 ...

  8. SDL_Test库(1)——SDL不用TTF库绘制文字

    SDL库有很多的扩展,这很方便.但是每个扩展库都很臃肿,一般都会拖上额外的两三个开源库,更有甚者,扩展库的大小比SDL库本身还大得多.但有一个自带的.很有用的库很容易被大家忽视.它就是本文要讲的SDL ...

  9. 转 Java中Filter、Servlet、Listener的学习

      1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个requ ...

  10. Codevs 1173 最优贸易 2009年NOIP全国联赛提高组

    1173 最优贸易 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description [问题描述] C 国有n ...