P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

判断强连通的关键是dfn与low。

dfn记录的是节点dfs搜索时的dfs序,而low则是记录表示这个点以及其子孙节点连的所有点中dfn最小的值。

关键节点即为dfn和low相等的节点。

colors则为节点染色:每次找到关节节点后,在栈中其前面的所有节点构成了一个强连通块。

而colors则是将这些节点记录为同一种颜色以表示他们在一个强连通块中

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include <stack>
#include<map>
#include<stdlib.h>
#include<queue>
#define LL long long
#define re register
using namespace std;
const int N=5e5+10,M=1e4+10,inf=0x3f3f3f3f;
const LL INF=1e18,mod=998244353;
int to[N],nxt[N],head[N],ecnt;
int col,num,dfn[M],low[M],de[M],si[M];
int co[M],top,st[M];
int n,m;
inline  void add(int x,int y) {to[++ecnt]=y;nxt[ecnt]=head[x];head[x]=ecnt;
}
inline void Tarjan(int u) {dfn[u]=low[u]=++num;st[++top]=u;for(int i=head[u]; i; i=nxt[i]) {int v=to[i];if(!dfn[v]) {Tarjan(v);low[u]=min(low[u],low[v]);} else if(!co[v]) {low[u]=min(low[u],dfn[v]);}}if(low[u]==dfn[u]) {co[u]=++col;++si[col];while(st[top]!=u) {++si[col];co[st[top]]=col;--top;}--top;}
}
int main() {int x,y;scanf("%d%d",&n,&m);for(int i=1; i<=m; i++) {scanf("%d%d",&x,&y);add(y,x);}for(int i=1; i<=n; i++) {if(!dfn[i])Tarjan(i);}for(int i=1; i<=n; i++) {for(int j=head[i]; j; j=nxt[j]) {if(co[i]!=co[to[j]])de[co[to[j]]]++;}}int ans=0,op=0;for(int i=1; i<=col; i++) {if(!de[i])ans=si[i],op++;}if(op==1)printf("%d",ans);else printf("0");return 0;
}

【强连通】P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G相关推荐

  1. 【tarjan】 P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G

    如果几头奶牛互相喜欢,那么我们就可把他们视为一个强连通分量,然后缩点. 此时出度为0的点为最受明星牛,但如果出度为0的点超过了一个那么就无法做到有奶牛被所有人喜欢 代码 #include<bit ...

  2. P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

    Day3 Tarjan 代码如下(示例): #include <bits/stdc++.h> using namespace std; const int MaxN=1e4+5;//最大点 ...

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

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

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

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

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

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

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

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

  7. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

  8. BZOJ1051|HAOI2006受欢迎的牛|强连通分量

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

  9. BZOJ 1051: [HAOI2006]受欢迎的牛 强连通分量,Tarjan缩点

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

最新文章

  1. 九十八、轻松搞定Python中的Markdown系列
  2. TS 188字节流结构图
  3. 鸿蒙系统替代iOS,华为横空出世!鸿蒙系统,能否替代安卓IOS?
  4. tp摄像头的默认地址_tp-link怎么设置无线桥接 tp-link设置无线桥接方法【图文】...
  5. 5002.boost库之thread
  6. 游戏王计算机兽,游戏王星杯卡——迅猛龙,再生圣经,入侵蠕虫,鼹鼠,幽世之血樱...
  7. python全屏模式 spider_我可以使用PIL以全屏模式显示图像吗?
  8. OC可变数组的常用操作
  9. python安装opencv出错_python 3安装opencv 3时出错?
  10. 【自动驾驶】LQR控制实现轨迹跟踪
  11. java留言功能_java web实现简单留言板功能
  12. 批处理学习笔记3:使用echo命令输出空格行
  13. 数据库基本操作和常用命令
  14. 微信小程序发布流程(上传审核)
  15. docker mysql 修改cnf_Docker下Mysql .cnf文件修改小贴士
  16. Thief-Book 上班摸鱼神器
  17. 报错: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘
  18. mac安装texstudio+mactex(texlive)2022+中文字体
  19. 三光(可见光、红外光、激光)云台产品调研
  20. ubuntu更换镜像源——全面讲解

热门文章

  1. 微型计算机的档次主要取决于,初级会计电算化全真模拟试卷(一)
  2. SP+Servlet+JavaBean+Filter+JSTL小例子
  3. 基于Thinkphp3导入数据mysql数据到Elasticsearch中
  4. 操作系统原理学习(第三周_上)_进程
  5. mysql修改库存量_mysql update 库存问题
  6. html5测试最好的浏览器,四款PC浏览器综合实力测试 谁才是最好的?
  7. sam音高修正_谁有samplitude12的高音修正插件 就是可以修改声音不准的内个插件 还是到哪可以下载呢...
  8. 列表.元组.range
  9. 中文可以做计算机语言吗,为什么不能用中文来做编程呢?
  10. 认识通讯软件搜狗号码通