题意:有一群牛,求被所有牛都认可的牛的个数

每个连通分量建一个缩点,出度为零的缩点包含的点的个数即为要求值

如果有多个出度为零的,直接输出零,否则输出那唯一一个出度为零的缩点包含的点的个数

#include<stdio.h>
#include<string.h>
#define N 11000
int dfn[N],low[N],sta[N],visit[N],suo[N],ans,outdegree[N],top,num[N];
int head[N],yong,n,m;
struct node {
int v,next;
}bian[N*10];
void init() {
memset(sta,0,sizeof(sta));
ans=0;
memset(outdegree,0,sizeof(outdegree));
memset(suo,0,sizeof(suo));
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(visit,0,sizeof(visit));yong=0;top=0;
memset(head,-1,sizeof(head));
memset(num,0,sizeof(num));
}
void addedge(int u,int v){
bian[yong].v=v;
bian[yong].next=head[u];
head[u]=yong++;
}
int Min(int u,int v) {
return u>v?v:u;
}
void tarjan(int u) {
visit[u]=1;
dfn[u]=++yong;
low[u]=yong;
sta[++top]=u;
int i,v;
for(i=head[u];i!=-1;i=bian[i].next) {
v=bian[i].v;
if(!dfn[v]) {
tarjan(v);
low[u]=Min(low[u],low[v]);
}
else
if(visit[v]==1)
low[u]=Min(low[u],dfn[v]); }
int coun=0;
if(dfn[u]==low[u]) {
ans++;
do{
v=sta[top--];
coun++;
visit[v]=2;
suo[v]=ans;//缩点
}while(v!=u);
num[ans]=coun;//记录缩点包含的点的个数
}
}
int main() {
int i,j,a,b;
while(scanf("%d%d",&n,&m)!=EOF) {
init();
while(m--) {
scanf("%d%d",&a,&b);
addedge(a,b);
}
ans=0;
yong=0;
for(i=1;i<=n;i++)
if(visit[i]!=2)
tarjan(i);
/* for(i=1;i<=n;i++)
printf("%d\n",suo[i]);*/
for(i=1;i<=n;i++)
for(j=head[i];j!=-1;j=bian[j].next)
if(suo[i]!=suo[bian[j].v])
outdegree[suo[i]]++;
yong=0;
for(i=1;i<=ans;i++)
if(outdegree[i]==0){
yong++;
j=i;
}
if(yong>1)
printf("0\n");
else
printf("%d\n",num[j]);
}
return 0;
}

poj 2186 强连通+缩点的更多相关文章

  1. poj 2186 (强连通缩点)

    题意:有N只奶牛,奶牛有自己认为最受欢迎的奶牛.奶牛们的这种“认为”是单向可传递的,当A认为B最受欢迎(B不一定认为A最受欢迎),且B认为C最受欢迎时,A一定也认为C最受欢迎.现在给出M对这样的“认为 ...

  2. poj 2186 强连通分量

    poj 2186 强连通分量 传送门 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 33414 Acc ...

  3. poj 2553强连通+缩点

    /*先吐槽下,刚开始没看懂题,以为只能是一个连通图0T0 题意:给你一个有向图,求G图中从v可达的所有点w,也都可以达到v,这样的v称为sink.求这样的v. 解;求强连通+缩点.求所有出度为0的点即 ...

  4. poj 3114(强连通缩点+SPFA)

    题目链接:http://poj.org/problem?id=3114 思路:题目要求很简单,就是求两点之间的花费的最短时间,不过有一个要求:如果这两个city属于同一个国家,则花费时间为0.如何判断 ...

  5. poj 2186 强连通入门题目

    每头牛的梦想就是成为牛群中最受欢迎的牛. 在一群N(1 <= N <= 10,000)母牛中, 你可以得到M(1 <= M <= 50,000)有序的形式对(A,B),告诉你母 ...

  6. poj 2762 强连通缩点+拓扑排序

    这题搞了好久,先是拓扑排序这里没想到,一开始自己傻乎乎的跑去找每层出度为1的点,然后才想到能用拓扑排序来弄. 拓扑排序的时候也弄了挺久的,拓扑排序用的也不多. 题意:给一个图求是否从对于任意两个点能从 ...

  7. Network of Schools POJ - 1236(强连通+缩点)

    题目大意 有N个学校,这些学校之间用一些单向边连接,若学校A连接到学校B(B不一定连接到A),那么给学校A发一套软件,则学校B也可以获得.现给出学校之间的连接关系,求出至少给几个学校分发软件,才能使得 ...

  8. POJ(2186)强连通分量分解

    #include<cstdio> #include<vector> #include<cstring> using namespace std; ; vector& ...

  9. POJ 2186 tarjan+缩点 基础题

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 37111   Accepted: 15124 De ...

随机推荐

  1. ASP.NET MVC 认证模块报错:“System.Configuration.Provider.ProviderException: 未启用角色管理器功能“

    新建MVC4项目的时候 选 Internet 应用程序的话,出来的示例项目就自带了默认的登录认证等功能.如果选空或者基本,就没有. 如果没有,现在又想加进去,怎么办呢? 抄啊.将示例项目的代码原原本本 ...

  2. VC UI界面库大集合

    Guitoolkit http://www.beyondata.com/pwc.html The Ultimate Toolbox http://www.codeproject.com/KB/MFC/ ...

  3. hdu1533 费用流模板

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  4. P1314 聪明的质监员 二分答案

    这个题我第一反应是线段树(雾),然后看了一眼题解之后就后悔了...前缀和...然后二分答案,然后就没有然后了. 题干: 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 nnn 个矿石 ...

  5. SpringCloud学习 什么是微服务(一)

    关于SpringCloud,我是看了周老师的<SpringCloud与Docker微服务架构实战>之后才有了一点了解,做下记录,以供后期学习.本人知识有限,如有不对,欢迎批评 1.什么是单 ...

  6. JS——事件详情(鼠标事件:clientX、clientY的用法)

    鼠标位置 >可视区位置:clientX.clientY 跟着鼠标移动的div案例 代码如下图:   这个案例,运用到前一篇文章中的event事件来处理.获取div的left和top值,当鼠标移动 ...

  7. netty之ByteBuf详解

    [ChannelPromise作用:可以设置success或failure 是为了通知ChannelFutureListener]Netty的数据处理API通过两个组件暴露——abstract cla ...

  8. java实现读取yaml文件,并获取值

    首先在项目src目录下新建一个test.yaml的文件. 代码如下: spring: application: name: cruncher datasource: driverClassName: ...

  9. bootstrap模态框和select2合用时input无法获取焦点(转)

    在bootstrap的模态框里使用select2插件,会导致select2里的input输入框没有办法获得焦点,没有办法输入. 解决方法: 1. 把页面中的  tabindex="-1&qu ...

  10. 微软CRM4.0 页面表单和腾讯QQ在线整合

    现在通过QQ和客户联系.洽谈业务及沟通感情的场合越来越多,在微软CRM表单上整合QQ可以方便的显示客户QQ在线状态,点击图标即可和客户进行QQ聊天. 客户在线状态: 客户离线状态: 输入QQ号码后即时 ...