SCC
再DFS一下
即可

不过为什么我代码在
BZOJ RE
LG+O2 WA
LG AC

诡异诡异

#include <cstdio>int read(){int x=0, f=1;char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-')f=-f;ch=getchar();}while(ch>='0' && ch<='9'){x=x*10+(ch-'0');ch=getchar();}return x*f;
}const int MAXV=10111;
const int MAXE=50111;int N, M;struct Vert{int FE;bool Vis;int Bel;
} V[MAXV];struct Edge{int x, y, next;bool i;
} E[MAXE<<1];int Ecnt=0;void addE(int a, int b){++Ecnt;E[Ecnt].x=a;E[Ecnt].y=b;E[Ecnt].next=V[a].FE;V[a].FE=Ecnt;E[Ecnt].i=false;++Ecnt;E[Ecnt].x=b;E[Ecnt].y=a;E[Ecnt].next=V[b].FE;V[b].FE=Ecnt;E[Ecnt].i=true;
}void Vis_init(){for(int i=1;i<=N;++i)V[i].Vis=false;
}int Dfn[MAXV], DFN=0;void DFS(int at){V[at].Vis=true;for(int k=V[at].FE, to;k>0;k=E[k].next){if(E[k].i)  continue;to=E[k].y;if(/*!*/V[to].Vis)  continue;DFS(to);}Dfn[++DFN]=at;
}void DFS(int at, int b){V[at].Vis=true;for(int k=V[at].FE, to;k>0;k=E[k].next){if(!E[k].i) continue;to=E[k].y;if(/*!*/V[to].Vis)  continue;DFS(to, b);}V[at].Bel=b;
}int Bcnt=0;void scc(){Vis_init();for(int i=1;i<=N;++i){if(V[i].Vis)    continue;DFS(i);}Vis_init();for(int i=N, j;i>=1;--i){j=Dfn[i];if(V[j].Vis)    continue;DFS(j, ++Bcnt);}
}bool Win=true;
int ANS=0;int main(){N=read();M=read();for(int i=1, a, b;i<=M;++i){a=read();b=read();addE(b, a);}scc();Vis_init();DFS(Dfn[N]);for(int i=1;i<=N;++i){if(!V[i].Vis){Win=false;break;}}if(Win){for(int i=1;i<=N;++i){if(V[i].Bel==1) ++ANS;}printf("%d\n", ANS);}else    puts("0");return 0;
}

转载于:https://www.cnblogs.com/Pickupwin/p/9096147.html

LG 2341 受欢迎的牛相关推荐

  1. 洛谷 2341受欢迎的牛

    洛谷  2341受欢迎的牛 废话真多啊,就是tarjan一遍,缩强连通分量点,建好新的图之后查看是否有出度为0的点. 如果有且仅有一个,那么这一个一定是可以被所有牛喜欢的啦,用cnt数组去记录每一个强 ...

  2. 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows

    P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...

  3. 解题报告:luogu P2341 受欢迎的牛(Tarjan算法,强连通分量判定,缩点,模板)

    题目链接:洛谷 受欢迎的牛 基本上算是一道模板题 根据题意,如果有环,意味着这个环里的牛都互相喜欢 我们可以先求出环,然后把每一个环都看作一个点,这样整个图就变成了一个DAG(有向无环图) 看有几个点 ...

  4. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

  5. BZOJ 1051 受欢迎的牛(Tarjan缩点)

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4573  Solved: 2428 [Submit][S ...

  6. BZOJ 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7120  Solved: 3779 [Submit][S ...

  7. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

  8. bzoj1051: [HAOI2006]受欢迎的牛

    tarjan缩点.判断是否只有一个没有出边.是则输出该点点数 #include<cstdio> #include<cstring> #include<iostream&g ...

  9. Bzoj1051 受欢迎的牛

    每一头牛的愿望就是变成一头最受欢迎的牛.现在有 N 头牛,给你 M 对整数 (A,B),表示牛 A 认为牛 B 受欢迎.这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 ...

最新文章

  1. 数据结构与算法:06 线性表
  2. 关于学习Python的一点学习总结(46->属性访问)
  3. Web前端之登录表单
  4. Tiniux 3.0 / Memory.c / OSMemInit
  5. sort list java leetcode_[LeetCode] 148. Sort List Java
  6. mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询
  7. c++ python opencv_从C++到Python的OpenCV垫
  8. linux 系统一键安装 lnmp
  9. 聊聊flink的FsStateBackend
  10. I/O重定向的原理和实现
  11. leetcode_day02
  12. 如何使用WinDbg查找蓝屏原因
  13. 蓝桥杯真题-单词分析
  14. jboss linux环境部署,linux下部署jboss
  15. 2023年南昌大学电子信息考研考情与难度、参考书及上岸前辈经验
  16. 矩阵的逆及求逆矩阵的方法,可逆矩阵定理与判定方法,(非)奇异矩阵,方程Ax=b解法,Hilbert矩阵及其逆的求法,条件数(Condition Number)及其计算方法
  17. 首次使用计算机鼠标键盘不能用,电脑鼠标键盘都不能用如何解决 开机后鼠标键盘不能用怎么办...
  18. Simon 5有哪些新功能? Simon 5 Mac版新功能介绍
  19. vm使用PE安装系统(1)
  20. 计算机毕业设计JAVA电影推荐网站mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. MyBatis研习录(13)——MyBatis二级缓存
  2. JESD2019a SSD温度换算等效时长
  3. 2分钟教你学会一键JS解密
  4. 机器人底层通讯(3): linux系统下获取电子罗盘数据(上)
  5. 小程序开发实例:指南针(2)
  6. hp服务器 高性能计算,高性能计算集群(HP_CLUSTER).doc
  7. 每日算法刷题Day5-平方矩阵II和III、蛇形矩阵图解
  8. 【线性回归类算法的建模与评估】
  9. thunderbird 将收发邮件放在一个thread中
  10. 如何重新设置苹果id密码_路由器密码忘记了怎么重新设置 路由器密码忘了怎么办?详解路由器密码忘记解决办法...