题目传送门:https://www.luogu.org/problemnew/show/P2341#sub

这道题有一个想法很重要,就是成为超级明星的奶牛所在的强连通分量出度为0,假如出度不为0,而他又有入度,那你不是把强连通分量求错了吗。但是假如有两个以上出度为0的奶牛群,那就会发生这几个奶牛群互不喜欢,遗憾的没有了超级明星,所以我们先用tarjan缩点,然后统计出度为0的点即可。附上代码:

#include<stdio.h>
#include<stdlib.h>
int head[500001]={0},low[500001]={0},co[500001]={0},to[500001]={0},x[500001]={0},y[500001]={0};
int d[500001]={0},dfn[500001]={0},nxt[500001]={0},num1[500001]={0},s[500001]={0},d2[500001]={0};
int n,m,tmp=0,top=0,col=0,num=0;
int min(int x,int y)
{if(x>y)return y;else return x;
}
int add(int x,int y)
{tmp++;to[tmp]=y;nxt[tmp]=head[x];head[x]=tmp;return 0;
}
int tarjan(int x)
{int i,t;num++;top++;s[top]=x;low[x]=num;dfn[x]=num;for(i=head[x];i;i=nxt[i]){t=to[i];if(dfn[t]==0){tarjan(t);low[x]=min(low[x],low[t]);}else if(co[t]==0){low[x]=min(low[x],dfn[t]);}}if(dfn[x]==low[x]){col++;co[x]=col;d[col]++;while(s[top]!=x){co[s[top]]=col;d[col]++;//统计每个强连通分量里有几头奶牛top--;}top--;}return 0;
}
int main()
{int i,tmp,j,flag=0;scanf("%d%d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&x[i],&y[i]);add(x[i],y[i]);}for(i=1;i<=n;i++)if(dfn[i]==0)tarjan(i);for(i=1;i<=n;i++)for(j=head[i];j;j=nxt[j])if(co[i]!=co[to[j]])d2[co[i]]++;//统计出度for(i=1;i<=col;i++)if(d2[i]==0&&flag==0){tmp=d[i];flag=1;}else if(d2[i]==0&&flag==1){printf("0");return 0;}printf("%d",tmp);return 0;
}

洛谷 2341 tarjan缩点相关推荐

  1. 洛谷 2341受欢迎的牛

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

  2. 洛谷3387 模板 缩点

    题目:缩点 思路:tarjan缩点+最长路. 注意: 1.用dijkstra求最长路时,优先队列中的<运算符要反过来. 2.需要把所有入度为0的点为起点跑一遍最长路. 3.每次求最长路时,dis ...

  3. 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

    https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市.任意两个城市之间最多只有一条道 ...

  4. 洛谷 P3387(缩点后+处理 )

    题目链接:https://www.luogu.com.cn/problem/P3387 分析: 我们需要找出一条点权最大的路径. 不限制点的个数,那么对于一个环上的点被选择了,一整条环都应该被选择. ...

  5. HAOI 2006 受欢迎的牛 (洛谷2341)

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  6. (Tarjan)洛谷P3387【模板】缩点

    洛谷P3387[模板]缩点 思路: 虽然是缩点模板题,但是明显感觉比同一个题单中的其他题都难. 题目思路已经提供给你:Tarjan缩点+DAGdp.就是用Tarjan缩点,重新建图之后,边拓扑排序边建 ...

  7. 洛谷P4742(tarjan缩点+拓扑DP)

    https://www.luogu.org/problemnew/show/P4742 题目背景 [Night - 20:02[Night−20:02 P.M.]P.M.] 夜空真美啊--但是--快要 ...

  8. 洛谷 P3387 【模板】缩点 tarjan 虚拟头节点和虚拟尾节点

    题目链接: https://www.luogu.org/problem/P3387 一:ac思路 参考博客: https://www.luogu.org/blog/wyz598085788/solut ...

  9. 洛谷 P3387 【模板】缩点 (tarjan)

    展开 题目背景 缩点+DP 题目描述 给定一个 nn 个点 mm 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重 ...

最新文章

  1. redis中的lua
  2. python三元运算符怎么使用_Python的三元运算符使用方法
  3. Masm for Windows集成开发环境编写汇编程序
  4. SAP CRM product customizing下载的第四个队列
  5. 面向对象之三大特性:继承,封装,多态
  6. java gradle构建_在Gradle中为JPMS构建Java 6-8库
  7. mybatis mysql demo_SpringBoot(入门Demo,整合mybatis,连接mysql)
  8. 之前是围棋下不过机器人,这回连打字也不行
  9. oracle用游标drop多个表,Oracle Procedure中使用游标cursor更新多表?
  10. PPT个人学习笔记(三)——模版背景的设计
  11. 【案例分享】网络环路检测基本功能配置
  12. PHP 返回结果给前端/ajax后,在后台继续执行代码的方法
  13. 固定Java窗口的大小
  14. maven查看jar包对应的依赖
  15. 浅谈Spark Livy
  16. 阵列天线中阵元间距、波程差与相位差之间的关系
  17. 泛微OA ecology8的一些开发经验汇总
  18. 新硬盘稳定性测试软件,Active@ Hard Disk Monitor 3.1硬盘检测及监控工具免费版
  19. 解决CST报错——“The desired daemon is down. Check the lmgrd log file...”
  20. harry -双人对战游戏

热门文章

  1. php ucs2,再探Unicode---ucs2及utf8
  2. java写一个查询详情接口_旅游景点api 景区详细信息查询服务
  3. 快捷键被占用?使用 OpenArk 帮你找出元凶
  4. 文献管理软件Mendeley使用说明
  5. 史上最详细的Hough直线检测
  6. 直播平台搭建源码,uniapp progress进度条
  7. P2251-03量产失败修复成功DT111
  8. 女神节,谈美工和美编
  9. js调试技巧之活用浏览器F12
  10. 无穷小微积分是植根于现代数学基础上的一朵鲜花,而不是鬼话、毒草