Popular Cows---poj2186(缩点,强联通)
题目链接:http://poj.org/problem?id=2186
求有多少个点满足其他n-1个点都能到达这个点,是单向图;
所以我们可以把图进行缩点,之后求出度为0的那个点内包含的点的个数就是求得答案;
如果出度为0的不止一个,那么答案为0;
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#define N 10010
#define Lson r*2
#define Rson r*2+1
#define INF 0xfffffff
using namespace std; int Stack[N], top, Out[N], Time, flag;
int nBlock, Block[N], dfn[N], low[N], Is[N], n, Head[N], cnt; struct Edge
{
int v, next;
}e[N*N];
void Init()
{
nBlock = cnt = top = Time = flag = ;
memset(Head, -, sizeof(Head));
memset(low, , sizeof(low));
memset(dfn, , sizeof(dfn));
memset(Block, , sizeof(Block));
memset(Out, , sizeof(Out));
memset(Is, , sizeof(Is));
memset(Stack, , sizeof(Stack));
}
void Add(int u, int v)
{
e[cnt].v=v;
e[cnt].next=Head[u];
Head[u]=cnt++;
}
void Tajar(int u)
{
dfn[u]=low[u]=++Time;
Is[u]=;
Stack[top++]=u;
int v;
for(int i=Head[u]; i!=-; i=e[i].next)
{
v=e[i].v;
if(!dfn[v])
{
Tajar(v);
low[u]=min(low[u], low[v]);
}
else if(Is[v])
{
low[u]=min(low[u], dfn[v]);
}
}
if(low[u]==dfn[u])
{
++nBlock;
do
{
v=Stack[--top];
Is[v] = ;
Block[v]=nBlock;
}while(u!=v);
}
}
int main()
{
int u, v, m;
while(scanf("%d%d", &n, &m)!=EOF)
{
Init();
for(int i=; i<m; i++)
{
scanf("%d%d", &u, &v);
Add(u,v);
}
for(int i=; i<=n; i++)
if(!low[i])
{
Tajar(i);
}
for(int i=; i<=n; i++)
{
for(int j=Head[i]; j!=-; j=e[j].next)
{
u=Block[i]; v=Block[e[j].v];
if(u!=v)
Out[u]++;
}
}
flag=;
int Index;
for(int i=; i<=nBlock; i++)
{
if(Out[i]==)
{
flag++;
Index=i;
}
}
if(flag>)
{
printf("0\n");
continue;
}
int ans=;
for(int i=; i<=n; i++)
{
if(Block[i]==Index)
ans++;
}
printf("%d\n", ans);
}
return ;
}
Popular Cows---poj2186(缩点,强联通)的更多相关文章
- (连通图 缩点 强联通分支)Popular Cows -- poj --2186
http://poj.org/problem?id=2186 Description Every cow's dream is to become the most popular cow in th ...
- POJ 2168 Popular cows [Tarjan 缩点]
...
- USACO 2003 Fall Orange Popular Cows /// tarjan缩点 oj22833
题目大意: n头牛,m个崇拜关系,并且崇拜具有传递性 如果a崇拜b,b崇拜c,则a崇拜c 求最后有几头牛被所有牛崇拜 强连通分量内任意两点都能互达 所以只要强联通分量内有一点是 那么其它点也都会是 按 ...
- [poj2186]Popular Cows(targin缩点)
题意:求其他所有牛都认为其牛的牛的个数. 解题关键:targin算法模板题,缩点形成一棵树,并不一定是棵树,可能含有多个入度为0的点,寻找出度为0的点(缩点之后的点)的个数,如果个数大于0,则无解,否 ...
- 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, ...
- POJ 2186 Popular Cows tarjan缩点算法
题意:给出一个有向图代表牛和牛喜欢的关系,且喜欢关系具有传递性,求出能被所有牛喜欢的牛的总数(除了它自己以外的牛,或者它很自恋). 思路:这个的难处在于这是一个有环的图,对此我们可以使用tarjan算 ...
- 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 <= ...
- 强连通分量tarjan缩点——POJ2186 Popular Cows
这里的Tarjan是基于DFS,用于求有向图的强联通分量. 运用了一个点dfn时间戳和low的关系巧妙地判断出一个强联通分量,从而实现一次DFS即可求出所有的强联通分量. §有向图中, u可达v不一定 ...
- POJ 2186 Popular Cows (强联通)
id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 655 ...
- 【Tarjan缩点】POJ2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 35644 Accepted: 14532 De ...
随机推荐
- Winform appconfig修改后的更新问题
- c++ 静态成员变量
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节 ...
- js省市二级联动
html: <script src="js/city.js"></script> ...... <body> <div class=&qu ...
- .Net中的序列化和反序列化详解
序列化通俗地讲就是将一个对象转换成一个字节流的过程,这样就可以轻松保存在磁盘文件或数据库中.反序列化是序列化的逆过程,就是将一个字节流转换回原来的对象的过程. 然而为什么需要序列化和反序列化这样的机制 ...
- 静态变量数组实现LRU算法
LRU算法的解释详情请见 https://baike.baidu.com/item/LRU/1269842 这里百度百科给出的比较详细,然后后面有一个例子 说 LRU(least recently u ...
- hadoop程序MapReduce之DataSort
需求:对文件中的数据进行排序. 样本:sort.log 10 13 10 20 输出:1 10 2 10 3 13 4 20 分析部分: mapper分析: 1.<k1,v1>k1代表:行 ...
- Android 5.0 API新增和改进
开始开发 要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像. 更新您的目标 API 级别 要进 ...
- cocos2d-x游戏引擎核心之十二——3.x新特性
v3.0 亮点 使用 C++(C++11) 的特性取代了 Objective-C 的特性 优化了 Labels 优化了渲染器(比 v2.2 更快) 新的事件分发机制 物理引擎集成 新的 UI 对象 J ...
- 【Java nio】 NonBlocking NIO
package com.slp.nio; import org.junit.Test; import java.io.IOException; import java.net.InetSocketAd ...
- ajax操作的链式写法
ajax操作的传统写法: $.ajax({ url: url, success: function(){ doWhenSuccess(); }, error: function(){ doWhenEr ...